news 2026/3/26 8:40:54

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

作者头像

张小明

前端开发工程师

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/3/23 20:06:39

CAN-FD

文章目录前言一、 CAN FD 和 CAN2.0区别二、CAN FD 和 CAN2.0的网络兼容性问题总结前言 之前学习知识停留在数据信号层面&#xff0c;对具体的技术细节了解不深入&#xff0c;现在整理下内容 在此感谢虹科分享的技术内容 B站学习视频 一、 CAN FD 和 CAN2.0区别 加粗样式 二…

作者头像 李华
网站建设 2026/3/23 2:34:04

文件夹“变身”危机?三步教你找回消失的数据!

在日常的计算机使用中&#xff0c;我们偶尔会遭遇一种令人困惑且担忧的现象&#xff1a;原本正常的文件夹突然变成了.exe可执行文件。这一异变不仅让文件夹失去了原有的功能&#xff0c;更隐藏着数据丢失的风险。本文将深入剖析文件夹变成exe的现象&#xff0c;并介绍一种高效的…

作者头像 李华
网站建设 2026/3/25 23:58:26

新手小白学习Power BI第六弹--------可视化高利润地区、客户条形图、亏损盈利分析以及预测利润销售额

目录0 前言1 目标2 实操2.1 高利润客户2.1.1 高利润客户Top102.1.2 客户利润贡献度Top202.2 高利润地区2.2.1 各地区利润地图2.2.2 各地区利润条形图2.3 盈利VS亏损2.3.1 创建 产品整体利润 列2.3.2 创建 利润状态 列2.3.3 亏损月份2.3.4 亏损产品2.3.5 盈利亏损占比图2.3.6 产…

作者头像 李华
网站建设 2026/3/12 23:17:03

05 电阻参数选择【电压、功率、精度等】

1 ★额定功率与电压选择电阻器的额定功率通常是指在正常的&#xff08;如温度、大气压等&#xff09;条件下&#xff0c;电阻器长时间连续工作所允许消耗的最大功率。 功率 P U*I R * I^2 U^2 / R假设电阻两端电压5V&#xff0c;通过0.05A电流&#xff0c;则功率 PU*I 5*0…

作者头像 李华
网站建设 2026/3/17 23:32:23

模型改进(吴恩达深度学习笔记)

目录 1.改善模型要看的两个指标 2.改进方法 &#xff08;1&#xff09;降低偏差 &#xff08;2&#xff09;降低方差 1.改善模型要看的两个指标 想要让一个监督学习算法达到实用&#xff0c;基本上需要达到两个指标&#xff1a;低偏差低方差 2.改进方法 &#xff08;1&a…

作者头像 李华
网站建设 2026/3/12 17:50:31

《数字化破局抖音电商:从爆品打造到闭环运营实战》 第三章 第一节

前言 第一部分 盈利思维与运营基础 第1章 抖音电商盈利思维 1.1 盈亏平衡点分析:C一年半实战复盘 1.2 抖音电商的四种盈利模式及适用场景 1.3 IT思维做运营:数据驱动、系统思考、敏捷迭代 1.4 构建运营的“安全区”与“加速器”:与平台共生 第2章 抖音电商全景认知 …

作者头像 李华