查询一个字符串最长的字串,要求字串中的每个字符都一样

tech2025-07-11  2

import java.util.ArrayList; import java.util.Scanner; public class Demo { public static void main(String[] args) { // 实例化一个输入对象 Scanner sc = new Scanner(System.in); // 提示用户输入 System.out.print("请输入一段字符串:"); String str = sc.next(); // 实例化一个集合接收每个连续出现的字符串 ArrayList<String> list = new ArrayList<String>(); int i = 0; for (i = 0; i < str.length(); i++) {// 外循环控制没段连续字符串第一个字符 for (int j = i; j < str.length(); j++) {// 内循环让第一个字符跟他后面的字符作比较 // 当没有跟第一个字符相同的结束循环截取这段字符串添加到集合当中 if (!str.substring(i, i + 1).equals(str.substring(j, j + 1))) { list.add(str.substring(i, j)); // 更新第一个字符的位置,因为跳出循环变量i会+1所有记录的下标需要-1不然会少一个字符 i = j - 1; break; } // 当j到最后一个字母的时候且最后一个字符跟截取的第一个字符相等直接将这段添加到集合当中 if (j == str.length() - 1 && str.substring(i, i + 1).equals(str.substring(j, j + 1))) { // 因为substring第二个参数是从1开始的所以j+1 list.add(str.substring(i, j + 1)); i = j;// 更新i的位置 break; } } } int index = 0;// 记录最长那个字符串的下标位置 int max = list.get(0).length();// 默认第一个字符串最长 // 遍历集合找到最长的那个字符串 for (int j = 0; j < list.size(); j++) { if (list.get(j).length() > max) { max = list.get(j).length(); index = j; } } // 打印集合 for (String string : list) { System.out.print(string + " "); } // 输出结果 System.out.println("最长的为" + list.get(index)); } }
最新回复(0)