news 2026/6/10 22:31:02

字符串处理小写字母转换大写字母

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
字符串处理小写字母转换大写字母

我来为你提供 Python、C++、Rust 的实现:

Python 实现

defprocess_string(s:str)->tuple[str,int]:""" 将字符串中的小写字母转换为大写,并统计小写字母个数 Args: s: 输入字符串 Returns: tuple[转换后的字符串, 小写字母个数] """lowercase_count=0result_chars=[]forchins:if'a'<=ch<='z':result_chars.append(chr(ord(ch)-32))# 小写转大写lowercase_count+=1else:result_chars.append(ch)# 其他字符保持不变return''.join(result_chars),lowercase_count# 更简洁的 Pythonic 写法defprocess_string_pythonic(s:str)->tuple[str,int]:lowercase_count=sum(1forchinsif'a'<=ch<='z')result=''.join(ch.upper()if'a'<=ch<='z'elsechforchins)returnresult,lowercase_count# 测试if__name__=="__main__":text="Hello World! 123"result,count=process_string(text)print(f"输入:{text}")print(f"输出:{result}")print(f"小写字母数:{count}")

C++ 实现

#include<iostream>#include<string>#include<cctype>// 用于 islower 和 toupper#include<utility>// 用于 pairstd::pair<std::string,int>processString(conststd::string&input){std::string result;intlowercaseCount=0;// 预分配空间,提高效率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){*lowercaseCount=0;for(inti=0;input[i]!='\0';++i){charch=input[i];if(ch>='a'&&ch<='z'){output[i]=ch-32;// 小写转大写++(*lowercaseCount);}else{output[i]=ch;}}output[strlen(input)]='\0';// 字符串结束符}// 测试intmain(){std::string text="Hello World! 123";auto[result,count]=processString(text);std::cout<<"输入: "<<text<<std::endl;std::cout<<"输出: "<<result<<std::endl;std::cout<<"小写字母数: "<<count<<std::endl;return0;}

Rust 实现

fnprocess_string(s:&str)->(String,usize){letmutresult=String::with_capacity(s.len());letmutlowercase_count=0;forchins.chars(){ifch.is_ascii_lowercase(){// 小写字母转大写result.push(ch.to_ascii_uppercase());lowercase_count+=1;}else{// 其他字符保持不变result.push(ch);}}(result,lowercase_count)}// 更函数式的 Rust 实现fnprocess_string_functional(s:&str)->(String,usize){letlowercase_count=s.chars().filter(|c|c.is_ascii_lowercase()).count();letresult=s.chars().map(|c|{ifc.is_ascii_lowercase(){c.to_ascii_uppercase()}else{c}}).collect();(result,lowercase_count)}// 测试fnmain(){lettext="Hello 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) pair<string, 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 保持不变

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 19:08:33

光是如何产生的?

光的本质粒子流一、核心辐射机制&#xff08;基础分类&#xff09;这是光产生的两种最根本跃迁方式&#xff0c;其他发光机制本质上可归为这两类的延伸或具体应用。• 自发辐射&#xff1a;粒子在无外部刺激时&#xff0c;自发从高能级跳向低能级&#xff0c;随机释放光子。 特…

作者头像 李华
网站建设 2026/6/10 19:40:46

PDFMathTranslate深度体验:国产大模型如何重塑学术翻译新范式

开篇思考&#xff1a;当学术翻译遇见AI&#xff0c;会发生什么&#xff1f; 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&…

作者头像 李华
网站建设 2026/6/10 11:13:24

梨树矮砧密植:水肥一体化系统的铺设要点指南

认识梨树矮砧密植梨树矮砧密植&#xff0c;简单来说就是选用矮化砧木嫁接的梨树品种&#xff08;Dwarf rootstock variety&#xff09;&#xff0c;通过科学增加种植密度来提高产量的创新栽培模式。就像在有限的果园空间里&#xff0c;精心布局更多果树&#xff0c;让每寸土地都…

作者头像 李华
网站建设 2026/6/9 19:11:16

MySQL 英文逗号隔开的数据如何模糊精确查询

在 PHP 中&#xff0c;如果你的数据字段内容是类似 "1,3,5,13,23" 这样的字符串&#xff08;多个数字用英文逗号分隔&#xff09;&#xff0c;而你只想精确匹配包含数字 3&#xff08;即单独的 3&#xff0c;而不是 13、23、30 等&#xff09;&#xff0c;那么不能直…

作者头像 李华
网站建设 2026/6/10 13:09:13

央企就业指导哪家技术强

央企就业指导&#xff1a;技术赋能下的精准突围路径在就业竞争白热化的当下&#xff0c;央国企因其稳定性、发展前景与社会价值成为求职者心中的"理想雇主"。但面对复杂的招聘流程与高门槛要求&#xff0c;如何通过技术手段提升求职成功率&#xff1f;行业报告显示&a…

作者头像 李华
网站建设 2026/6/10 13:05:50

Java 低代码平台的“动态引擎”:Liquor

在 Java 低代码平台中&#xff0c;Liquor 充当了运行时 JIT 编译器和规则引擎。它弥合了“配置”与“高性能 Java 运行时”之间的鸿沟。它解决了 Java 生态中热更新、高性能、强类型三者难以兼得的根本矛盾。 Liquor &#xff08;动态编译后&#xff09;就是 Java 原生运行&…

作者头像 李华