一、问题描述
就是我们现在有一个字符串,我们需要实现一个功能,就是选择在字符串中字符的ASCII码最大的地方,插入字符串。
二、解决思路
我们直接循环,获取字符串中所有的字符,然后判断这个字符,并且获得这个字符所处的地址,在这个地方,我们进行插入。
三、代码实现
import java.util.Scanner; public class str_insert1 { public static void main(String[] args){ Scanner sc=new Scanner(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)); } }
然后我们可能还会碰到别的需求。比方说我们需要在字符串中最长的连续出现的字符后插入。
然后这个问题实际上入手点就和上面一样,找到字符串中最长的连续出现的字符。那么这个应如何找呢?
思路就是我们选到一个字符,将这个字符和后面的数值相比较,如果相同,就记下相同的数目,然后和后面的字符数量进行比较。实现代码如下:
import java.util.Scanner; public class str_insert2 { public static int i,m; public static void main(String[] args){ Scanner sc=new Scanner(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)); } }
上面有了字符串中最长的连续出现的字符的代码。然后我们可能会想去尝试一下如果我们是要把字符出现只出现一次,或是出现最少的后面再加呢。然后我们就去实现它把。
这个实现方式我们按照上面的方式实际上也是可以的,然后我们可以试着另外的一种方式。
只出现一次的情况:
import java.lang.reflect.Array; import java.util.Collections; import java.util.Scanner; public class str_insert3 { public static void main(String[] args){ Scanner sc=new Scanner(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; } } } }
如果是出现最少的情况,就在我们出现最多的情况下修改就行了,这里就不再赘述了。
标签:字符,JAVA,Scanner,int,插入,str,字符串,sc,public From: https://www.cnblogs.com/TomHard/p/16893538.html