剑指 Offer.50——第一个只出现一次的字符

题目链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

s = “abaccdeff”
返回 “b”
s = “”
返回 " "

解题过程

java的indexOf()用法
在这里插入图片描述
了解上述用法后就好办了:

  • 每遍历一个字符,就判断是否在之后的字符串中能否找到相同的字符,即 s.indexOf(ch, i + 1)
  • 但是只有上述条件不够完整,因为如果出现cc这样的字符串时,当遍历到第二个c,结果还是会返回c,是不对的。所以还要判断当前字符之前没有出现过该字符s.indexOf(ch) == i的含义是:在字符串中寻找该字符串是否出现过。如果第一次出现位置是它自己则符合题意。
class Solution {
    public char firstUniqChar(String s) {
        for (int i = 0; i < s.length(); i++){
            char ch = s.charAt(i);
            if (s.indexOf(ch) == i && s.indexOf(ch, i + 1) == -1){
                return ch;
            }
        }
        return ' ';
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43207025/article/details/107932367