加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – String压缩循环逻辑

发布时间:2020-12-14 19:36:34 所属栏目:Java 来源:网络整理
导读:我的for循环为我的字符串压缩有点偏.过去5天我一直在做这项任务,我无法弄清楚我的生活有什么不对.有人可以帮我吗? 例如,我传递了字符串“TTTTrrrEe”,而不是获得T4r3Ee,我得到了T4r3EeTT.我不知道为什么它会像那样跳回到字符串的开头,但我越来越近了.我们只
我的for循环为我的字符串压缩有点偏.过去5天我一直在做这项任务,我无法弄清楚我的生活有什么不对.有人可以帮我吗?

例如,我传递了字符串“TTTTrrrEe”,而不是获得T4r3Ee,我得到了T4r3EeTT.我不知道为什么它会像那样跳回到字符串的开头,但我越来越近了.我们只能使用字符串类中的charAt,equals,length和substring.

有人可以通过帮助纠正我的逻辑来帮助指导我朝着正确的方向前进吗?我仍然想尝试自己编写代码,看看它是如何分配的.

public static String compress(String s){
    int count = 0;
    String temp = s.substring(0,1);
    for(int i = 0; i < s.length(); i++){
        if(i !=s.length()-1){
            if(temp.equals(s.substring(i,i+1))){
                count++;

            }else{

                if(count < 1){
                    System.out.print(s.substring(i,i+2));
                    System.out.print(temp.substring(0,1) );
                }else{
                    System.out.print("" + temp.substring(0,1) + count);
                    i--;
                    temp = s.substring(count,count+1);
                    System.out.println(" temp is now " + temp);

                    count = 0;
                    //i--;
                }
            }
        }

    }

    System.out.println(temp);

    return temp;
}

解决方法

由于这是一个学习练习,我不会尝试修复您的代码,只需指出一些工作要做到正确:

>如果将for循环条件更改为i >比较单个字符比比较子字符串更容易(也更快).通过调用char ch1 = s.charAt(i)得到位置i的字符,并使用==运算符比较两个字符,而不是在它们上调用equals().
>当count为零(你的计数< 1条件相当于count == 0)时,除了temp的第一个字符后跟count之外,你还要打印当前字符和后面的字符.这看起来不正确.
>不是在循环中增加临界值,而是在每次迭代时设置它.这看起来不正确.
>在循环中增加temp的更好方法是使用StringBuilder和append(),而不是使用普通的String,并执行连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读