[英]Move all the digits at the end of string using recursion
我的代碼給我類似#check ## done654321的輸出,但是我想要使用遞歸的類似“#check ## done123456”的東西。 輸入字符串為replaceD(“ 123#check#456#done”)。 我該怎么辦?
public String replaceD(String str){
String str1 = "";
String str2 = "";
if(str.length() == 0){
return "";
}
char ch = str.charAt(0);
if(ch >= '0' && ch <= '9'){
str1 = str1 + ch;
}
else{
str2 = str2 + ch;
}
return str2 + replaceD(str.substring(1))+str1;
}
是否需要保留訂單或將其排序。 如果只是要保留的順序,則刪除排序並直接添加str2。
下面給出了排序代碼
public String replaceD(String str, String str1, String str2){
String strtemp1="";
String strtemp2="";
if(str.length() == 0){
String k[] = str2.split("");
Arrays.sort(k)
str2=""
for (int i = 0; i < k.length; i++) {
str2+=k[i];
}
return str1+str2;
}
char ch = str.charAt(0);
if(ch >= '0' && ch <= '9'){
str1 = str1 + ch;
}
else{
str2 = str2 + ch;
}
return replaceD(str.substring(1),str1+strtemp1, str2+strtemp2);
}
使用遞歸
public static void usingRecursion(String str){
System.out.println(replaceD_2(str, ""));
}
private static String replaceD_2(String str, String str2){
String str1 = "";
if(str.length() == 0){
return str2;
}
if(str.charAt(0) >= '0' && str.charAt(0) <= '9'){
str2 = str2 + str.charAt(0);
}
else {
str1 = str1 + str.charAt(0);
}
return str1 + replaceD_2(str.substring(1), str2);
}
使用迭代
public static void main(String[] args) {
String input = ScannerUtils.scanForString();
StringBuilder digitBuilder = new StringBuilder();
StringBuilder charBuilder = new StringBuilder();
for(int i = 0; i< input.length(); i++){
if(input.charAt(i) >= '0' && input.charAt(i) <= '9'){
digitBuilder.append(input.charAt(i));
}
else {
charBuilder.append(input.charAt(i));
}
}
String output = charBuilder.toString().concat(digitBuilder.toString());
System.out.println(output);
}
public String replaceD(String str){
String str1 = "";
String str2 = "";
if(str.length() == 0){
return "";
}
int l = str.length();
char ch = str.charAt(l-1);
if(ch >= '0' && ch <= '9'){
str1 = str1 + ch;
}
else{
str2 = str2 + ch;
}
return replaceD(str.substring(0,l-1))+str2+str1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.