A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

给定一个字符串,判断里面出现的cat和dog出现的次数是否相同,相同返回true.否则返回false
比如"catdogxxxcatxxdogxcat"(这里只是举个例子)
请问应该用什么方法去判断?

12 个回复

倒序浏览
我用这种方法做出来了,还有别的方法吗?谢谢大家
public boolean catDog(String s) {
                int catCount = 0;
                int dogCount = 0;
                for(int i = 0;i<s.length()-2;i++) {
                        if(s.charAt(i)=='c'&&s.charAt(i+1)=='a'&&s.charAt(i+2)=='t') {
                                catCount++;
                        }else if(s.charAt(i)=='d'&&s.charAt(i+1)=='o'&&s.charAt(i+2)=='g') {
                                dogCount++;
                        }
                }
                if(catCount==dogCount) {
                        return true;
                }else {
                        return false;
                }
        }
回复 使用道具 举报
String str = "catdogxxxcatxxdogxcat";
                String str1 = str.replace("cat", "*");
                String str2 = str.replace("dog", "*");
                boolean b = str1.length()==str2.length();
                System.out.println(b);
我认为这种比较简单.用同一个字符来替换dog和cat 然后比较字符串长度,因为cat和dog长度相同,不同也可以根据其长度来判断
回复 使用道具 举报 1 0
int countCat = 0;
                int countDog = 0;
                for (int i = 0; i <= str.length()-3; i++) {
                        if(str.substring(i, i+3).equals("cat")){
                                countCat++;
                        }
                        if(str.substring(i, i+3).equals("dog")){
                                countDog++;
                        }
                }
                boolean bb = countCat==countDog;
这种方法也可以...还有别的方法..
回复 使用道具 举报
分别查询cat和dog的次数,再比较返回,或者查询一次字符串,记录两者的次数,再比较,程序我就不写了
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
Damonlalala 发表于 2017-4-28 02:06
int countCat = 0;
                int countDog = 0;
                for (int i = 0; i

咱俩思路是一样的,你用的SubString()方法我,是找出字符,然后比较
回复 使用道具 举报
剑桥子卿卿 发表于 2017-4-28 08:15
分别查询cat和dog的次数,再比较返回,或者查询一次字符串,记录两者的次数,再比较,程序我就不写了
...

问题就是在用什么方法去查询cat和dog的次数
回复 使用道具 举报
Damonlalala 发表于 2017-4-28 01:56
String str = "catdogxxxcatxxdogxcat";
                String str1 = str.replace("cat", "*");
                String str2 = str.r ...

我也考虑过用这种方法,但是按照这种思路的话
这应该是替换之后的结果吧str1="*dogxxx*xxdogx*"    str2 = "cat*xxxcatxx*xcat",比较这两个字符串没什么意义吧好像
回复 使用道具 举报
回复 使用道具 举报
13716326405 发表于 2017-4-28 08:51
我也考虑过用这种方法,但是按照这种思路的话
这应该是替换之后的结果吧str1="*dogxxx*xxdogx*"    str2 = ...

没有意义吗?这是我感觉最简单的方法了啊..你要的结果就是比较他们出现的次数,这个返回的结果刚好就能体现啊
回复 使用道具 举报
Damonlalala 发表于 2017-4-29 00:51
没有意义吗?这是我感觉最简单的方法了啊..你要的结果就是比较他们出现的次数,这个返回的结果刚好就能体现 ...

按照这么做的话,不能直接比较str1和str2的长度,他们的长度没有可比性。
能不能这样,str1和str2,分别替换成不同的符号,然后分别遍历两个字符串,统计这两个不同符号的次数,然后对它俩进行比较判断,这样行吗
回复 使用道具 举报
学习一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马