3、最长公共前缀(输入一个字符串数组,查找该数组中所有字符串的最长公共前缀,并将其输出,如果不存在公共前缀,输出“NO”)。
输入格式:
第一行一个整数 n 代表数组长度。
往下 n 行,每行一个字符串
输出格式:
共一行,为最长公共前缀或“NO”。
![](https://profile-avatar.csdnimg.cn/e05420e69614404c95717873de5b67ae_2301_80477449.jpg!4)
Java基础搜索解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
要解决这个问题,我们可以使用 Java 编写一个函数,这个函数接受一个字符串数组作为参数,然后找到所有字符串的最长公共前缀。下面是详细的步骤和代码实现:
- 首先,我们需要确定数组中的第一个字符串作为参考字符串,因为所有的公共前缀都至少包含这个字符串的所有字符。
- 然后,遍历这个参考字符串的每个字符,对于每一个字符,检查其他所有字符串在相同位置是否也含有相同的字符。如果有任何一个字符串不匹配,则停止搜索并返回当前已找到的公共前缀。
- 如果我们成功地比较了参考字符串的所有字符,那么这些字符就是最长公共前缀。
- 如果在任何时刻没有找到公共前缀,即所有字符串在某个位置都不匹配,我们可以提前结束搜索并返回 "NO"。
以下是完整的 Java 代码实现:
import java.util.Scanner; public class LongestCommonPrefix { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); String[] strings = new String[n]; for (int i = 0; i < n; i++) { strings[i] = scanner.next(); } System.out.println(longestCommonPrefix(strings)); scanner.close(); } public static String longestCommonPrefix(String[] strs) { if (strs.length == 0) return ""; // 使用第一个字符串作为参考 String prefix = strs[0]; // 遍历参考字符串的每个字符 for (int i = 1; i < strs.length; i++) { while (!strs[i].startsWith(prefix)) { // 减少前缀长度,直到找到匹配的子串或前缀为空 prefix = prefix.substring(0, prefix.length() - 1); // 前缀为空时,表示没有公共前缀,返回 "NO" if (prefix.isEmpty()) { return "NO"; } } } return prefix; } }
这段代码首先从用户那里获取输入的字符串数组,然后调用
longestCommonPrefix
函数计算最长公共前缀,并将结果打印出来。longestCommonPrefix
函数中,我们使用了一个while
循环来动态更新公共前缀的长度,直到找到所有字符串的最长公共前缀或确认不存在公共前缀。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵