2 zz19891008 zz19891008 于 2014.07.29 20:56 提问

求字符串中相同最长的字串

用java程序写 题目:输入一行字母组成的字符串,找出其中出现的相同且
长度最长的字符串,输出它及其首字符的位置。
如yyabrdabjcabreg,则输出为abr,3。异常情况输出-1

1个回答

zhouhua0104
zhouhua0104   2014.08.08 17:21

/**
* 思路:"abdab" 拆分情况:1.ab abd abda abdab 2.bd bda bdab 3 da dab 4 ab 5 b
*
* @param str
* @return
*/
public static String find(String str) {
String reg;// 最大字符串
String left;// 剩余字符串
int k = 0;// 计数器
int len = 0;// 最大字符串的长度
String result = null;// 最终结果
for (int i = 0; i < str.length(); i++) {

        for (int j = 0; j < str.length() - i; j++) {
            if (k < (j + 1)) {
                // 将字符串拆分成若干个子串
                reg = new String(str.substring(k, j + 1));
                left = new String(str.substring(j + 1));

                if (left.indexOf(reg) != -1 && reg.length() != 1) {

                    if (reg.length() > len) {
                        result = reg;
                        len = reg.length();
                    }
                }
            }
        }
        k++;
    }
    return result;

}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
求一个字符串的最长重复字串问题
给定一个字符串,求出这个字符串的最长重复字串,例如abcdbcd,最长重复字串是bcd。 分析: 方法1:   一种方法是先解决http://blog.csdn.net/bertzhang/article/details/7303010的问题,在对字符串进行循环处理。 具体过程如下: 1)首先解决两个字符串的最长公共邻接子串问题; 2)将字符串,abcdbcd分成如下两个字符串的集合:
求一段字符串中出现的相同且长度最长的字符串
求一段字符串中出现的相同且长度最长的字符串 int main() { string str,substr; string str1; int t3; int t1 = 0; int t2 = 0; cout<<"请输入字符串"<<endl; int maxnum = 0; int count = 0; cin>>str; int len = str
字符串的最长重复子串
#
找出字符串中最长的重复子串(三种解法)
文中提出了三种:找出字符串中最长的重复子串的解法 比如 输入qweabcuwabcfw,输出结果为3 并且还能输出第二次出现abc的 a 的地址。
求字符串中由连续的相同字符组成的最长子串(如果有两个及两个以上的最长子串,则输出第二个)
public class MaxChildStr { public static void main(String[] args) { process(new String("zzzzxxxfffr")); process(new String("zzzzxxxfffrrrrr")); process(new String("zzzzxxxxxfffrrr")); p
求字符串的最长重复子串——Java实现
要求:求一个字符串的最长重复子串 思路:使用两个指针,两个指针的间隔从1,2,3...依次增大, 同时向右移动两个指针,在移动的过程中判断指针位置的字符是否相同,并记录最长子串的长度。 Java代码: public class Solution { // 求解字符串中的最长重复子串 public static String maxRepat(String input) {
C#之求两个输入的字符串的最长公共子串
用c#求两个字符串的最大公共子串,并输出
求字符串中出现相同且长度最长字符串
输入一行字符串,找出其中出现的相同且长度最长的字符串,输入它及其首字符的位置。例如“yyabcdabjcabceg”,输出结果应该为abc和3.
求给定两字符串的最长相同子串
import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.Stack;public class Test { //调整栈 //如果栈为空,则将s压入栈 //由于栈中存放的是最长相同子串(可能有多个长度相同的子串,而它们的内容也可能相同,例如"asd","
求一个字符串中最长重复的长度,以010101010101为例子
一个朋友突然叫我写这个需求,网上查看了下别人代码,复杂度都是O(n平方),感觉明显不想, 想了半天自己写了个复杂度为O(n),看下面代码: package com.wanda.beam; public class PipelineOptionTest { public static void main(String args[]){ String str="0101010101