文字列に一連の文字が含まれているとうまくいかないことがあります。 (真/偽)文字列内に一連の文字が順番にあることを確認します
例: abc1deeef2hh hijk3lmno
この文字列に1,2,3が設定されているかどうかを確認する必要があります。だから3は2や1などの前に来ることはできません。
アドバイスをいただければ幸いです。
文字列に一連の文字が含まれているとうまくいかないことがあります。 (真/偽)文字列内に一連の文字が順番にあることを確認します
例: abc1deeef2hh hijk3lmno
この文字列に1,2,3が設定されているかどうかを確認する必要があります。だから3は2や1などの前に来ることはできません。
アドバイスをいただければ幸いです。
私がここで取るアプローチは、数字以外の文字をすべて削除し、文字列を1回だけ通過させて、後続の数字がそれよりも前に来ていないことを確認します。
public static boolean isInOrder(String input) {
if (input == null || input.length() == 0) {
return true;
}
String inputNums = input.replaceAll("[^\\d]", "");
char prev = inputNums.charAt(0);
for (int i=1; i < inputNums.length(); ++i) {
char curr = inputNums.charAt(i);
if (curr < prev) {
return false;
}
prev = curr;
}
return true;
}
public static void main(String[] args) {
String input = "abc1deeef2hh hijk3lmno";
System.out.println(input + ", " + isInOrder(input));
input = "abc2deeef1hh hijk3lmno";
System.out.println(input + ", " + isInOrder(input));
}
出力:ここ
abc1deeef2hh hijk3lmno, true
abc2deeef1hh hijk3lmno, false
デモ:
あなたにもJSで
function checkOrderedArrElm(array, order) {
var m = 0;//Counter
var current_num;
var next_num;
var result = array;
var test;
if (array !== undefined) {
if (array.constructor === Array) {
result = true;
while (m < array.length) {
current_num = array[m];
next_num = array[m + 1];
if (typeof current_num === "number" &&
typeof next_num === "number") {
if (order) {
test = current_num >= next_num;
} else {
test = current_num <= next_num;
}
if (test) {
result = false;
break;
}
}
m += 1;
}
}
}
return result;
}
var strInput= "abc1deeef2hhh ijk3lmno";
function ExtractNumberFromString(strInput) {
var indices = [];
var inputVal = strInput;
console.log(inputVal);
for (var i = 0; i < inputVal.length; i++) {
if (Number(inputVal[i])) indices.push(Number(inputVal[i]));
}
return indices;
}
checkOrderedArrElm(ExtractNumberFromString(strInput), true));
0123を行うことができます
ここで確認できますhttps://www.w3schools.com/code/tryit.asp?filename=FEYURSRVZMXH