栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

最大公共前缀(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最大公共前缀(Java)

思路很简单,冒泡比对两个单词的每一位,比对到不相同位为止,对比已有的最大前缀,如果更大则更新,最终得出结果。

	@Test
    public void testMaxCommonPrefix() {
        String[] strs = {"flower", "float", "fight", "flaaay", "flaaaat"};
        System.out.println(maxCommonPrefix(strs));
    }

    public String maxCommonPrefix(String[] strs) {
        StringBuilder sampleChar = new StringBuilder();     //最大前缀(结果)
        for (int i = 0; i < strs.length; i++) {             //冒泡比较每个单词
            for (int j = 0; j < strs.length - 1 - i; j++) {
                StringBuilder tempSampleChar = new StringBuilder();     //临时最大前缀
                for (int i1 = 0; i1 < strs[i].length() && i1 < strs[i + 1].length(); i1++) {      //遍历每一位
                    if (strs[i].charAt(i1) == strs[i + 1].charAt(i1)) {               //两个单词的每一位字母是否相等
                        tempSampleChar.append(strs[i].charAt(i1));
                    } else {
                        break;
                    }
                }
                if (tempSampleChar.length() > sampleChar.length()) {    //临时最大前缀>最大前缀,赋新值
                    sampleChar = tempSampleChar;
                }
            }
        }
        return sampleChar.toString();
    }

二维数组实现的清晰版本:

	@Test
    public void testSpace() throws UnsupportedEncodingException {
        String[] strs = {"flower", "float", "fight", "fly", "flat"};

        char[][] multiChar = new char[strs.length][];
        for (int i = 0; i < strs.length; i++) {     //转成二维字符表
            multiChar[i] = strs[i].toCharArray();
        }

        StringBuilder sampleChar = new StringBuilder();     //最大前缀(结果)

        for (int i = 0; i < multiChar.length; i++) {       //冒泡比较每个单词
            for (int j = 0; j < multiChar.length - 1 - i; j++) {

                char[] curStr = multiChar[i];
                char[] nextStr = multiChar[i + 1];

                StringBuilder tempSampleChar = new StringBuilder();     //临时最大前缀

                for (int i1 = 0; i1 < curStr.length && i1 < nextStr.length; i1++) {      //遍历每一位
                    if (curStr[i1] == nextStr[i1]) {               //两个单词的每一位是否相等
                        tempSampleChar.append(curStr[i1]);          //追加相同部分
                    } else {
                        break;
                    }
                }

                if (tempSampleChar.length() > sampleChar.length()) {    //临时最大前缀>最大前缀,赋新值
                    sampleChar = tempSampleChar;
                }
            }
        }
        System.out.println(sampleChar.toString());
    }
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号