【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


  1. 如果對您有幫助可以點贊、收藏、關注,將會是我最大的動力 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章