【C/C++题目】字符串处理——记录每个字符出现的次数;比较字符串是否相等;字符串中相同字符的最大间距;
链接地址:【C/C++题目】字符串处理——记录每个字符出现的次数;比较字符串是否相等;字符串中相同字符的最大间距;
一、记录每个字符出现的次数
输入一串字符, 打印其中每个字符出现的次数(如果没有则不显示)
1,实现代码
#include <iostream>
#include <string>
using namespace std;
///储存次数
int arr[256];
///字符串
string str;
int main()
{
///输入
cout << "样例输入:";
getline(cin, str);
int len = str.length();
///记录次数
//rep(i, 0, len - 1) arr[str[i]] ++;
for (int i = 0; i <= len - 1; i++)
arr[str[i]] ++; //使用ASCII码作为数组下标
///输出
cout << endl << "结果:" << endl;
for (char i = 0; i < 127; i++)
if (arr[i] != 0)
cout << "'" << i << "': " << arr[i] << "\t";
return 0;
}
2,运行效果
二、比较字符串是否相等
输入两串字符串, 无视空格和大小写, 判断其是否相等
1,实现代码
#include <iostream>
#include<string>
using namespace std;
void transform(string* str, int len); //大小写转换,及删除空格
int main()
{
string str1, str2;
int len1, len2;
cout << "请输入测试字符串:";
getline(cin, str1);
cout << "请输入比较字符串:";
getline(cin, str2);
len1 = str1.length();
len2 = str2.length();
transform(&str1, len1);
transform(&str2, len2);
len1 = str1.length();
len2 = str2.length();
cout << endl << "比较结果:";
if (len1 == len2)
{
for (int i = 0; i < len1; i++)
{
if (str1[i]!=str2[i])
{
cout << "两组字符串不相等" << endl;
}
}
cout << "两组字符串相等" << endl;
}
else
{
cout << "两组字符串不相等" << endl;
}
return 0;
}
void transform(string* str, int len)
{
for (auto it = str->begin(); it != str->end(); it++)
{
if ((*it) == ' ') //删除空格
{
str->erase(it);
}
if ((*it) >= 'A' && (*it) <= 'Z') //所有大写转小写
{
(*it) = (*it) + 32;
}
}
}
2,运行效果
三、找字符串中相同字符的最大间距
输入一个字符串
查找出相同字符中 间距最大的那个
并打印出字符和间距
(注: 以遇到的第一个相同字符为准)
1,实现代码
#include <iostream>
#include <string>
using namespace std;
string str;
int find(int i) {
int index = i + 1;//功能类似于游标
//循环找同字符
while (str[i] != str[index]) {
//没找到的情况
if (index == str.length()) {
return 0;
}
index++;
}
//从 i 下标开始到下一个同字母的间隔数
return index - i - 1;
}
int main() {
//记录最大间隔
int max = 0;
//暂时的最大间隔
int temp_max = 0;
cout << "输入测试字符串:";
getline(cin, str);
//记录最大间隔所对应的字符
char char_max = 0;
for (int i = 0; i < str.length(); i++) {
temp_max = find(i); //获取暂时的最大字符间隔
//比较最大
if (temp_max >= max) {
max = temp_max;
char_max = str[i];
}
}
cout << endl << "计算结果:";
cout << char_max << ":" << max << endl;
return 0;
}
2,运行效果
如有不足之处,还望指正 [1]。
如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ↩︎
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构