一、问题描述

就是我们现在有一个字符串,我们需要实现一个功能,就是选择在字符串中字符的ASCII码最大的地方,插入字符串。

二、解决思路

我们直接循环,获取字符串中所有的字符,然后判断这个字符,并且获得这个字符所处的地址,在这个地方,我们进行插入。

三、代码实现

importjava.util.Scanner;public classstr_insert1 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);
String str
=sc.next(),str2=sc.next();int j=0;for(int i=0;i<str.length();i++){if(str.charAt(i)>str.charAt(j)){
j
=i;
}
}
System.out.println(str.substring(
0, j+1)+str2+str.substring(j+1));
}
}

然后我们可能还会碰到别的需求。比方说我们需要在字符串中最长的连续出现的字符后插入。

然后这个问题实际上入手点就和上面一样,找到字符串中最长的连续出现的字符。那么这个应如何找呢?

思路就是我们选到一个字符,将这个字符和后面的数值相比较,如果相同,就记下相同的数目,然后和后面的字符数量进行比较。实现代码如下:

importjava.util.Scanner;public classstr_insert2 {public static inti,m;public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);
String str
=sc.next(),str1=sc.next();int cnt=0;for(i=0;(i+1)<str.length();){int j=i+1;while(str.charAt(i)==str.charAt(j)&&j<str.length())
{
j
++;
}
if((j-i)>cnt){
cnt
=j-i;
m
=j;
}
i
=j;
}
System.out.println(str.substring(
0,m)+str1+str.substring(m));
}
}

上面有了字符串中最长的连续出现的字符的代码。然后我们可能会想去尝试一下如果我们是要把字符出现只出现一次,或是出现最少的后面再加呢。然后我们就去实现它把。

这个实现方式我们按照上面的方式实际上也是可以的,然后我们可以试着另外的一种方式。

只出现一次的情况:

importjava.lang.reflect.Array;importjava.util.Collections;importjava.util.Scanner;public classstr_insert3 {public static voidmain(String[] args){
Scanner sc
=newScanner(System.in);
String str
=sc.next(),str1=sc.next();int[] arr=new int[26];for(int i=0;i<str.length();i++){int num=str.charAt(i)-'a';
arr[num]
++;
}
for(int i=0;i<str.length();i++){if(arr[i]==1)
{
System.out.print(str.substring(
0, i+1)+str1+str.substring(i+1));break;
}
}
}
}

如果是出现最少的情况,就在我们出现最多的情况下修改就行了,这里就不再赘述了。

标签: none

添加新评论