从字符串中删除重复的字符

时间:2015-06-16 00:42:47

标签: java

import java.util.Scanner;

public class StringWithoutDuplicate {

    public static void stringWithoutDuplicate(String s1)
    {
        int n = s1.length();
        int i = 0;
        while(i<n)
        {
            if(s1.charAt(i) == s1.charAt(i+1))
            {
                if(s1.charAt(i) == s1.charAt(n-1))
                {
                    System.out.println(s1.charAt(i));
                }
                i++;
            }
            else if(s1.charAt(i) != s1.charAt(i+1))
            {
                if(s1.charAt(i) == s1.charAt(n-1))
                {
                    System.out.println(s1.charAt(i));
                }
                 System.out.println(s1.charAt(i));;
                i++;
            }
        }
    }

    public static void main(String[] args) {
        Scanner s =  new Scanner(System.in);
        s.useDelimiter(",");
        String s1 = s.next();

        System.out.println(s1);

        stringWithoutDuplicate(s1);

    }
}

代码提供输出但有例外 请告诉我代码中的错误以及纠正错误的方法。 我不想改变我的代码的逻辑,所以只使用这个逻辑来解决它。

2 个答案:

答案 0 :(得分:0)

错误:

i的范围来自0 to (n-1),与您的字符串s1中的字符索引范围相同。这是正确的。

但在while loopi = n-1

的最后一次迭代中

此时,s1.charAt(i+1)s1.charAt(n)相同。这应该是错误的。

答案 1 :(得分:0)

public static void stringWithoutDuplicate(String s1) {
    int prev = -1;
    for (int i = 0, size = s1.length(); i < size; ++i) {
        char c = s1.charAt(i);
        if (c != prev) {
            System.out.println(c);
            prev = c;
        }
    }
}