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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Itheima_yuan 高级黑马   /  2015-12-9 13:11  /  1136 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目大概是这样的:创建一个类,实现查找字符串s1,在字符串s2中出现的位置,返回位置下标,若不存在则返回-1;
我的代码如下:
class StringTest{
        public static void sop(Object obj){
                System.out.println(obj);
        }
      public static void main(String[] args){
                String s1="asdfghjkl";
                String s2="gh";
                sop(""+stringIndex(s1, s2));
}
      public static int stringIndex(String s1,String s2){
                String max = (s1.length()>s2.length())?s1:s2;
                String min = (max==s1)?s2:s1;
                for(int index=0;index<max.length();index = index + s2.length()){
                        index = max.indexOf(s2, index);
                        return index;
                }
                return -1;               
        }
}



虽然说能返回,但是不理想。
还需考虑:假如长字符串含有多个短的字符串,位置应该怎样输出等。
求大神讨论完善!感激不尽!

6 个回复

正序浏览
String类里面不是有indexOf()方法么。。源码如下:
    public int indexOf(int ch, int fromIndex) {
        final int max = value.length;
        if (fromIndex < 0) {
            fromIndex = 0;
        } else if (fromIndex >= max) {
            // Note: fromIndex might be near -1>>>1.
            return -1;
        }

        if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {
            // handle most cases here (ch is a BMP code point or a
            // negative value (invalid code point))
            final char[] value = this.value;
            for (int i = fromIndex; i < max; i++) {
                if (value[i] == ch) {
                    return i;
                }
            }
            return -1;
        } else {
            return indexOfSupplementary(ch, fromIndex);
        }
    }
回复 使用道具 举报
Itheima_yuan 发表于 2015-12-9 19:16
前面那个判断就是判断哪个是大串的啊。我的是不完善,可能还有错误,所以我才想大神帮我改进嘛 ...

你这个题目,直接调用indexOf()方法不就是最终答案了么。
回复 使用道具 举报
Hi.。 发表于 2015-12-9 17:36
很明显的bug,大串如果是s2,那么你就做错了

前面那个判断就是判断哪个是大串的啊。我的是不完善,可能还有错误,所以我才想大神帮我改进嘛
回复 使用道具 举报
Hi.。 发表于 2015-12-9 17:36
很明显的bug,大串如果是s2,那么你就做错了

还有indexOf()是干什么的?
回复 使用道具 举报
很明显的bug,大串如果是s2,那么你就做错了
回复 使用道具 举报
给力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马