Java 按顺序确认字符串中有一系列字符
我有点被困在如何计算一个字符串是否包含一系列按设定顺序排列的字符上。(对/错) 例如,abc1deeef2hh hijk3lmno 所以我需要检查这个字符串是否包含一个1,2,3的顺序。所以3不能在2或1之前出现,以此类推Java 按顺序确认字符串中有一系列字符,java,string,Java,String,我有点被困在如何计算一个字符串是否包含一系列按设定顺序排列的字符上。(对/错) 例如,abc1deeef2hh hijk3lmno 所以我需要检查这个字符串是否包含一个1,2,3的顺序。所以3不能在2或1之前出现,以此类推 任何建议都将不胜感激。我在这里采取的方法是删除所有非数字字符,然后简单地对字符串进行一次传递,检查以确保没有后续数字小于之前的数字 public static boolean isInOrder(String input) { if (input == null ||
任何建议都将不胜感激。我在这里采取的方法是删除所有非数字字符,然后简单地对字符串进行一次传递,检查以确保没有后续数字小于之前的数字
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));
函数checkOrderedArrElm(数组,顺序){
var m=0;//计数器
无功电流;
var next_num;
var结果=数组;
var检验;
if(数组!==未定义){
如果(array.constructor==array){
结果=真;
while(m=下一个数量;
}否则{
测试=当前数量