兰州网站建设方案,德州建设网站有,沈阳城乡建设工程信息网,深圳百度seo公司我来为你提供 Python、C、Rust 的实现#xff1a;
Python 实现
def process_string(s: str) - tuple[str, int]:将字符串中的小写字母转换为大写#xff0c;并统计小写字母个数Args:s: 输入字符串Returns:tuple[转换后的字符串, 小写字母个数]…我来为你提供 Python、C、Rust 的实现Python 实现defprocess_string(s:str)-tuple[str,int]: 将字符串中的小写字母转换为大写并统计小写字母个数 Args: s: 输入字符串 Returns: tuple[转换后的字符串, 小写字母个数] lowercase_count0result_chars[]forchins:ifachz:result_chars.append(chr(ord(ch)-32))# 小写转大写lowercase_count1else:result_chars.append(ch)# 其他字符保持不变return.join(result_chars),lowercase_count# 更简洁的 Pythonic 写法defprocess_string_pythonic(s:str)-tuple[str,int]:lowercase_countsum(1forchinsifachz)result.join(ch.upper()ifachzelsechforchins)returnresult,lowercase_count# 测试if__name____main__:textHello World! 123result,countprocess_string(text)print(f输入:{text})print(f输出:{result})print(f小写字母数:{count})C 实现#includeiostream#includestring#includecctype// 用于 islower 和 toupper#includeutility// 用于 pairstd::pairstd::string,intprocessString(conststd::stringinput){std::string result;intlowercaseCount0;// 预分配空间提高效率result.reserve(input.length());for(charch:input){if(islower(ch)){result.push_back(toupper(ch));// 小写转大写lowercaseCount;}else{result.push_back(ch);// 其他字符保持不变}}return{result,lowercaseCount};}// 使用传统指针的 C 风格实现voidprocessStringCstyle(constchar*input,char*output,int*lowercaseCount){*lowercaseCount0;for(inti0;input[i]!\0;i){charchinput[i];if(chachz){output[i]ch-32;// 小写转大写(*lowercaseCount);}else{output[i]ch;}}output[strlen(input)]\0;// 字符串结束符}// 测试intmain(){std::string textHello World! 123;auto[result,count]processString(text);std::cout输入: textstd::endl;std::cout输出: resultstd::endl;std::cout小写字母数: countstd::endl;return0;}Rust 实现fnprocess_string(s:str)-(String,usize){letmutresultString::with_capacity(s.len());letmutlowercase_count0;forchins.chars(){ifch.is_ascii_lowercase(){// 小写字母转大写result.push(ch.to_ascii_uppercase());lowercase_count1;}else{// 其他字符保持不变result.push(ch);}}(result,lowercase_count)}// 更函数式的 Rust 实现fnprocess_string_functional(s:str)-(String,usize){letlowercase_counts.chars().filter(|c|c.is_ascii_lowercase()).count();letresults.chars().map(|c|{ifc.is_ascii_lowercase(){c.to_ascii_uppercase()}else{c}}).collect();(result,lowercase_count)}// 测试fnmain(){lettextHello World! 123;let(result,count)process_string(text);println!(输入: {},text);println!(输出: {},result);println!(小写字母数: {},count);}// 单元测试#[cfg(test)]modtests{usesuper::*;#[test]fntest_process_string(){assert_eq!(process_string(Hello),(HELLO.to_string(),4));assert_eq!(process_string(123),(123.to_string(),0));assert_eq!(process_string(aBcDeF),(ABCDEF.to_string(),3));assert_eq!(process_string(),(.to_string(),0));}}各语言特点对比特性 Python C Rust字符串类型 不可变 Unicode std::string可变 String可变str不可变切片内存管理 自动垃圾回收 手动/RAII 所有权系统函数返回 元组 (str, int) pairstring, int 元组 (String, usize)字符处理 内置方法 .upper() 标准库函数 toupper() 方法 .to_ascii_uppercase()空安全 运行时检查 无可能空指针 编译时保证Option类型性能特点 简洁但较慢 高效接近硬件 零成本抽象内存安全运行示例输入: Hello World! 123 输出: HELLO WORLD! 123 小写字母数: 8解释· “Hello World!” 中有 8 个小写字母e,l,l,o,o,r,l,d· 数字和标点符号保持不变· 原本的大写字母 H、W 保持不变