OJ刷题记录:问题 D: 只出现一次的字符

问题 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;
} 

猜你喜欢

转载自blog.csdn.net/weixin_45711556/article/details/108285317