编写一个java函数void str_bin(char str1[ ], char str2[ ]), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。 【输入形式】 分行从键盘输入两个有序字符串(不超过100个字符) 【输出形式】 输出合并后的有序字符串 【输入样例】 aceg bdfh 【输出样例】 abcdefgh 【样例说明】 输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh
时间: 2024-03-04 15:49:41 浏览: 409
下面是实现函数的代码:
```java
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
char[] str1 = sc.nextLine().toCharArray();
char[] str2 = sc.nextLine().toCharArray();
str_bin(str1, str2);
System.out.println(str1);
}
public static void str_bin(char str1[], char str2[]){
int len1 = str1.length, len2 = str2.length;
char[] newStr = new char[len1 + len2];
int i = 0, j = 0, k = 0;
while(i < len1 && j < len2){
if(str1[i] < str2[j]){
newStr[k++] = str1[i++];
} else {
newStr[k++] = str2[j++];
}
}
while(i < len1) newStr[k++] = str1[i++];
while(j < len2) newStr[k++] = str2[j++];
for(i = 0; i < k; i++){
str1[i] = newStr[i];
}
}
}
```
实现思路:
定义两个指针i和j,分别指向str1和str2字符串中的元素,比较i和j所指向的元素大小,如果str1[i] < str2[j],就将str1[i]加入到新的字符串newStr中,否则将str2[j]加入到newStr中,直到i或j越界。最后将剩余的元素加入到newStr中,将newStr中的元素复制到str1中。
阅读全文