问题 D: 只出现一次的字符
题目要求:
小明现在想要找出字符流中第一个只出现一次的字符。给出如下规则来寻找只出现一次的字符,例如,当从字符流中只读出三个字符”bli”时,第一个只出现一次的字符是’b’。当从字符流中读出四个字符"blib"时,第一个只出现一次的字符是‘l’。如果当前字符流没有存在出现一次的字符,返回‘*’字符。
输入
blibli
输出
bbbli*
解题思路:
字符串操作。本题主要有两次子字符串截取,第一次截取当前需要检查的字符串,而在进行检查时需要截取去了被检查字符的字符串。
通关代码:
#include <iostream>
#include <string>
using namespace std;
char getOnlyOneChar(string str) {
char res;
bool isOnlyOne = false;
string son;
int LEN = str.size();
for (int i = 0; i < LEN; i++) {
son = str.substr(0, i) + str.substr(i + 1);
if (son.find(str[i]) == son.npos) {
isOnlyOne = true;
res = str[i];
break;
}
}
if (isOnlyOne == false) {
res = '*';
}
return res;
}
int main() {
string str, son;
getline(cin, str);
int LEN = str.size();
for (int i = 1; i <= LEN; i++) {
son = str.substr(0, i);
cout << getOnlyOneChar(son);
}
return 0;
}