最新华为OD机试
题目描述
编写一个函数来查找字符串数组中的最长公共后缀;
如果不存在公共后缀,返回固定字符串: @Zero。
补充说明:
1、字符串长度范围:[2, 1000];
2、字符串中字符取值范围为[1, 126]。
输入描述
[“abc”,“bbc”,“c”]
输出描述
“c”
示例1
输入
["abc","bbc","c"]
输出
"c"
说明
返回公共后缀:c
示例2
输入
["aa","bb","cc"]
输出
"@Zero"
说明
不存在公共后缀,返回固定结果:@Zero
解题思路
解题思路
在这个题目中,我们需要寻找一个字符串数组中所有字符串的最长公共后缀。如果没有公共后缀,则返回固定字符串 @Zero
。以下是解决此问题的思路:
-
初始化公共后缀:
- 选择字符串数组中的第一个字符串作为起始的公共后缀。
-
逐个比较:
- 从第二个字符串开始,依次与当前的公共后缀进行比较。
- 使用一个索引变量
j
(从1开始)从后向前检查两个字符串的字符是否相同,直到发现第一个不同字符或者达到字符串的开头。
-
更新公共后缀:
- 如果找到不同字符(即当
j
值大于1时),就截取公共后缀的长度,通过substring
方法更新公共后缀。 - 如果
j
值等于1,说明第一个字符串的最后一个字符与当前字符串的最后一个字符不同,那么此时就没有公共后缀,直接返回@Zero
。
- 如果找到不同字符(即当
-
最终输出:
- 如果经过所有字符串的比较后仍然存在公共后缀,就打印这个公共后缀;否则打印
@Zero
。
- 如果经过所有字符串的比较后仍然存在公共后缀,就打印这个公共后缀;否则打印
Java