按顺序输出字符串,重复的只输出一次

方法不唯一,可以利用图画理解。

一、解题思路

         先遍历原来的字符串str,取出str的每个字母作为一个新的字符串数组array的下标(下标为字母对应的ASCII值),字母在array位置的初始值为0,为0就将字母放入另一个字符串数组sb,然后要使0变为1,这样的话,下次再出现相同的字母就不会放到sb里面了,最后输出的sb就是按顺序输出没有重复字母的字符串了。

二、完整代码

1.主函数部分

public static void main(String[] args) {
    //按顺序输出字符串,重复的只输出一次
    Scanner in = new Scanner(System.in);
    //多组输入
    while(in.hasNextLine()){
        String str = in.nextLine();
        String ret = func(str);
        System.out.println(ret);
    }

2.代码实现部分

public static String func(String str){
        StringBuilder sb = new StringBuilder();//sb为接收的新的字符串
        int[] array = new int[127];//46个字母包括大小写,最大的ASCII码值是z的122
                                   //array用来判断字母是否重复
        //遍历原来的字符串
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);//ch接收每个字符
            if(array[ch]==0){          //array[ch]中的ch已经转变为字母的ASCII码值
                sb.append(ch);         //append将指定字符串添加到sb里面
                array[ch]=1;          //此时的array的所在位置变为1,到遍历字符串再次出现这个字母时,不会再添加到要输出的字符串中str
            }
        }
        return sb.toString();
    }

补充:

1)StringBuilder :

StringBuilder是Java中的一个可变字符串类,它提供了许多方便的操作字符串的方法。

在这里的两个作用:

  1. 创建一个StringBuilder对象: StringBuilder sb = new StringBuilder();

  2. 向StringBuilder中添加字符: sb.append();

 2)charAt:

charAt()是JavaScript中的字符串方法,用于返回指定索引位置的字符。

在这里的作用:

                       返回str每个字母:string.char(i);

总结

        这道题用到的方法时间复杂度为O(n),是比较好的解题方法了,不过要充分理解还需要借助图画,以及对一些类的方法要充分熟悉,建议初学者对这个解题思路多看几遍,上手敲代码,理解才能更深入和收获更多。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值