从Java中的字符串中找到第一个唯一字符

时间:2019-01-21 20:19:48

标签: java arrays string

问题陈述:给定一个字符串,找到其中的第一个非重复字符并返回其索引。如果不存在,则返回-1。

示例: s =“ leetcode” 返回0。

s =“ loveleetcode”, 返回2。

我的解决方案:

class Solution387{
public int firstUniqChar(String s) {
    int count=0;
    if(s == null || s.length() < 1) {
        return -1;
    }
    else if (s.length() == 1) {
        return 0;
    }

    for(Character ch:s.toCharArray()){
        if(s.indexOf(ch)==s.lastIndexOf(ch)){
            count=s.indexOf(ch);

            break;
        }

    }


    return count;

}

}

对于这两个示例,我的解决方案效果很好。但是第二部分如果不存在,返回-1 ,我不明白如何实现这一部分。

说,我有一个测试用例:输入:“ cc”我的输出:0预期输出:-1

如何实现第二部分?

2 个答案:

答案 0 :(得分:1)

很简单,您可以将count初始化为-1,因此,如果没有找到任何内容,并且返回count,您将返回-1

public int firstUniqChar(String s) {
    int count=-1;
    if(s == null || s.length() < 1) {
        return -1;
    }
    else if (s.length() == 1) {
        return 0;
    }

    for(Character ch:s.toCharArray()){
        if(s.indexOf(ch)==s.lastIndexOf(ch)){
            count=s.indexOf(ch);    
            break;
        }

    }  
    //If no unique character is found, count will still be -1  
    return count;    
}

然后运行时:

System.out.println(firstUniqChar("aabbcc"));

输出:

-1

答案 1 :(得分:0)

localhost