规则: 找出指定长度的重复的字符串, 未匹配则返回空字符串
function getSameStr(str, n) {
//
}
const res = getSameStr('71235912304', 3)
console.log(res) // '123'
希望得到结果: '123'
规则: 找出指定长度的重复的字符串, 未匹配则返回空字符串
function getSameStr(str, n) {
//
}
const res = getSameStr('71235912304', 3)
console.log(res) // '123'
希望得到结果: '123'
function getSameStr(str, n) {
if(n >= str || n <= 0){
return [];
}
let newArr = [];//存放由str分割成的长度为n的字符串。
let result = [];//存放返回结果
for(let i = 0; i+n <= str.length; i++){
let newStr = str.substr(i,n);
if(contains(newArr,newStr)){
result.push(newStr);
}
newArr.push(newStr);
}
return result;
}
function contains(array, obj) {
var i = array.length;
while (i--) {
if (array[i] === obj) {
return true;
}
}
return false;
}
let red = getSameStr('71235912304', 3)
console.log(red) // ['123']
你这个问题都没有描述清楚
按你的期望,应该是在字符串中找出第1个N字符的连续升序子串
按这个,则 符合条件的有 '123','235','359','123' 这几个符合连续升序数量,第1个是'123'
这个的处理需要先把字符串转换为编码(方便比较)数组,然后进行查找比较,输出第1个符合条件的子数组,再转换为字符串输出,查找不到则输出空。
function getA(arr){
let rt=[];
for( let i=0;i<arr.length;i++){
rt.push( arr.codePointAt(i) )
}
return rt;
}
function getSameStr(str, n) {
let rt='';
let Arr;
if(n<=str.length) {
Arr=getA(str)
let i=0;
let AL=Arr.length;
while(i<(AL-n)){
let flag=true;
for(let j=1;j<n;j++){
if(Arr[i+j]<Arr[i+j-1]){
flag=false;
i=i+j;
break;
}
}
if(flag){
for(let k=0;k<n;k++){
rt=rt+String.fromCharCode(Arr[i+k])
}
break;
}
}
}
return rt;
}
const res = getSameStr('71235912304', 5)
console.log(res) // '12359'
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决