第六题:1108. IP 地址无效化
class Solution { public String defangIPaddr(String address) { StringBuilder sb=new StringBuilder(); for(int i=0;i<address.length();i++){ if(address.charAt(i) == '.'){//当等于'.'时不加进去,而加"[.]"这样就完成了替换 sb.append("[.]"); continue; } sb.append(address.charAt(i)); } return sb.toString(); } }
第七题:剑指 Offer 05. 替换空格
class Solution { public String replaceSpace(String s) { StringBuilder sb=new StringBuilder(); for(int i=0;i<s.length();i++){ if(s.charAt(i)==' '){ sb.append("%20"); continue; } sb.append(s.charAt(i)); } return sb.toString(); } }
字符串替换总结:
这种字符串替换的问题,其实一个思路,先创建StringBuilder类,在一个for循环中通过
s.charAt(i)得到s字符串中的每个字符,在通过比对要换的字符,比对成就加入替换的字符
在通过此次字符暂停(continue),StingBuilder对象.append(s.charAt(i))即可.最后通过
toSting()返回即可.
第八题:1365. 有多少小于当前数字的数字
第一想法的老方法
class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { int count=0; int n=nums.length; int arr[]=new int[n]; for(int i=0;i<n;i++){ count=soul(nums,i); arr[i]=count; } return arr; } public static int soul(int nums[],int n){ int sum=0; for(int i=0;i<nums.length;i++){ if(n!=i){ if(nums[n]>nums[i]){ sum++; } } } return sum; } }
第九题:剑指 Offer 17. 打印从1到最大的n位数
class Solution { public int[] printNumbers(int n) { int number=1; //几个n就弄到几位数 for(int i=0;i<n;i++){ number*=10; } //由题可知申请number-1即可 int []arr=new int[number-1]; for(int i=0,j=1;i<number-1;i++,j++){ arr[i]=j; } return arr; } }
第十题:1389. 按既定顺序创建目标数组
class Solution { public int[] createTargetArray(int[] nums, int[] index) { //创建一个集合 ArrayList<Integer> array = new ArrayList(); for(int i=0; i<nums.length; i++) { //通过集合的add方法对指定索引进行插入 array.add(index[i],nums[i]); } int[] target = new int[array.size()]; //遍历集合将集合中的元素插入 for(int i=0; i<target.length; i++) { target[i] = array.get(i); } return target; } }
这个参考了评论区的想法,非常的巧妙,利用add带索引的插入方法,在通过遍历加入所有
元素,确实挺好的。