151.翻转字符串里的单词
思路:前去头空格,再去尾空格,然后依次取出所有的单词,然后用一个字符串接受,然后从放入的数组,倒置输出。难在去空格细节,我是内置for来进行去空格的
func reverseWords(s string) string {runes := []rune(s)hash := make([]string,0)//去空格//去掉首尾for runes[0] == ' ' || runes[len(runes)-1] == ' '{if runes[0] == ' '{runes = runes[1:len(runes)]}if runes[len(runes)-1] == ' '{runes = runes[0:len(runes) - 1]}}runes = append(runes,' ')record := 0for i,i2 := range runes{if i2 == ' ' && i > record{hash = append(hash,string(runes[record:i]))record = ifor runes[record] == ' ' && record < len(runes) - 1{record++}}}res := ""for i := len(hash)-1;i >=0 ; i--{res += hash[i]res += " "}return res[0:len(res) - 1] }
LCR 182. 动态口令
思路:LLM找的类似题,很简单就从头部取那个要放在后面的字符,然后加上去,最后在原串返回的时候截断前面几个就行
func dynamicPassword(password string, target int) string {newstr := password[0:target]password = password + newstrreturn password[target:] }
28.实现 strStr()
思路:就是找子串,然后我们对比这个子串在不在母串里面,在的话就返回
func strStr(haystack string, needle string) int {needle_len := len(needle)if len(haystack) < needle_len{return -1}for i:=0 ; i <= len(haystack) - needle_len;i++{if needle == haystack[i:i+needle_len]{return i}}return -1 }
459.重复的子字符串
思路:遍历完所有的子串,然后匹配母串是否能由子串组成。记得剪枝。
func repeatedSubstringPattern(s string) bool {if len(s) == 0 {return true}lens := len(s)tag := false//先确定一个子串然后for i := 1; i < lens; i++ {//这样的话无法组成if lens % i != 0{continue}sub := s[0:i]lensb := len(sub)for j := 0; j <= lens-lensb; j += lensb {println(sub)if sub != s[j:j+lensb] {break}if j == lens-lensb {tag = true}}}return tag }