2022-3-18 剑指offer day35
题1:
JZ50 第一个只出现一次的字符
描述
在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数) 数据范围:0 \le n \le 100000≤n≤10000,且字符串只有字母组成。 要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)1 import java.util.*; 2 public class Solution { 3 public int FirstNotRepeatingChar(String str) { 4 Mapmap=new HashMap<>(); 5 for (int i=0;i ){ 6 //int a=str.lastIndexOf(str.substring(i,i+1)); 7 char c=str.charAt(i); 8 map.put(c,map.getOrDefault(c,0)+1); 9 } 10 for (int i=0;i ){ 11 if (map.getOrDefault(str.charAt(i),0)==1) return str.lastIndexOf(str.substring(i,i+1)); 12 } 13 return -1; 14 } 15 }
思路:map存储,找到一个值得字母。
题2:
JZ5 替换空格
描述
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 数据范围:0 \le len(s) \le 1000 \0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。1 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 7 * 8 * 9 * @param s string字符串 10 * @return string字符串 11 */ 12 public String replaceSpace (String s) { 13 // write code here 14 return s.replace(" ","%20"); 15 16 } 17 }
思路:内置函数