编写查询函数返回数字字符串中最大的公共前缀字符串
// **原题 14-最长公共前缀
// 思路:竖着看相不相等咯
const strArr = readline().split(',');
let min = strArr[0].length;
let len = 0;
for (let i = 1; i < strArr.length; i++) {
min = Math.min(min, strArr[i].length);
}
function calLen() {
for (let i = 0; i < min; i++) {
for (let j = 1; j < strArr.length; j++) {
// 相等的传递性
if (strArr[j][i] !== strArr[j - 1][i]) {
return len;
}
}
len++;
}
return len;
}
// 切一下字符串
console.log(strArr[0].slice(0, calLen()));
//JavaScript V8
const strs = readline().split(",")
if(!strs) console.log(""); //如果输入为空,自然返回空字符串
let res = strs[0];
//新建一个求两个字符串最长公共前缀的函数
const getLongestCommonPrefix = (str1, str2) => {
let minLen = Math.min(str1.length, str2.length);
let commonIndex = 0;
while(commonIndex < minLen && str1[commonIndex] === str2[commonIndex]){
commonIndex++;
}
return str1.slice(0, commonIndex);
}
for(let i = 1; i < strs.length; i++){
//使用上面新建的函数横向扫描
res = getLongestCommonPrefix(res, strs[i]);
//如果还没扫描完,res已经为空,就可以直接返回。为了减少用时,不加也可以。
if(!res.length) console.log(res);
}
console.log(res); var arr = readline().split(',');
var LongestPrefix = function(str) {
var data = str.split(",");
var res;
for(let i = 0; i < data[0].length; i++) {
res = data[0].slice(0, i + 1);
for(let k = 0; k < data.length; k++) {
if(data[k].slice(0, i + 1) !== res)
return data[0].slice(0, i);
}
}
return res;
}
console.log(LongestPrefix(arr[0])); // 将字符串转换为数组,然后记录数组中的第一个字符串的每一个字符,依次判断数组总每个字符串是否都有这个字符,使用every,若返回false,则改字符串不是公共前缀字符串,则不再判断。
let commontFirstStr = function() {
let arr = readline().split(",");
if(arr.length) {
let commont = ''; // 记录公共前缀
for(let i = 0; i < arr[0].length; i++){
let temp = arr[0][i]; // 记录第一个字符串的每一个字符
// 判断数组中的每个字符串是否有对应相同的字符
if(arr.every(el=>{
return el.charAt(i) == temp;
})){
commont += temp; // 若相同及记录下相同的字符
} else {
break; // 反之,不是相同的前缀字符,停止判断
}
}
return commont;
}
return '';
}
console.log(commontFirstStr()); # 查找字符串中的最长公共前缀
def Solution(arr):
inArr= arr
for i in range(len(inArr[0])):
for j in range(len(inArr)):
if(inArr[j][i]!=inArr[0][i]):
break
else:
# return inArr[0][:j]
print(inArr[0][:j])
return
# return ''
print('')
return
str = input()
arr = str.split(',')
Solution(arr) var longestCommonPrefix = function (strs) {
if (strs == null || strs.length == 0)
return "";
//默认第一个字符串是他们的公共前缀
let prefix = strs[0];
let i = 1;
while (i < strs.length) {
//不断的截取
while (strs[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length - 1);
}
i++;
}
return prefix;
}; let line = readline()
let arr = line.split(/\s+/)
let res = ""
for(let i = 0;i < arr[0].length;i++){
let c = arr[0][i]
if(arr.every(item => item[i] === c)){
res = res + c
}else{
break
}
}
console.log(res)
这用的什么测试用例啊,为什么我这个代码无法通过。
const inputStr = readline();
const arr = inputStr.split(',');
// 再不传入默认值的情况下,prev指向的是index=0位置,item指向index=1位置
print(arr.reduce((prev,item)=>{
let temp = '';
for(let i =0;i<prev.length;i++){
if(prev[i] === item[i]){
temp += prev[i];
}else{
break;
}
}
return temp;
})); 感谢上面老哥提示!