C/C++题目字符串处理——记录每个字符出现的次数;比较字符串是否相等;字符串中相同字符的最大间距;
Posted CoutCodes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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] << " ";
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]。
如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ??
以上是关于C/C++题目字符串处理——记录每个字符出现的次数;比较字符串是否相等;字符串中相同字符的最大间距;的主要内容,如果未能解决你的问题,请参考以下文章