GP29. 字符串构成
描述
示例1
输入:
"ab","aab"
输出:
true
Go 解法, 执行用时: 2ms, 内存消耗: 844KB, 提交时间: 2022-07-24
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param des string字符串 * @param src string字符串 * @return bool布尔型 */ func canConstruct( des string , src string ) bool { // write code here des_li := []byte(des) src_li := []byte(src) // 1、src 做成一个字典,并把个数都统计进去;2、再循环des,循环到了,就减一 new_map := make(map[byte]int) for _, i := range src_li { new_map[i]++ } for _, i := range des_li { if new_map[i] == 0 { // fmt.Println(false) return false } new_map[i]-- } // fmt.Println(true) return true }
C++ 解法, 执行用时: 3ms, 内存消耗: 316KB, 提交时间: 2022-07-03
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param des string字符串 * @param src string字符串 * @return bool布尔型 */ bool canConstruct(string des, string src) { // write code here vector<int> count(26,0); for(auto c:src){ count[c-'a']++; } for(auto s:des){ count[s-'a']--; if(count[s-'a']<0)return false; } return true; } };
Go 解法, 执行用时: 3ms, 内存消耗: 828KB, 提交时间: 2022-06-08
package main; func canConstruct( des string , src string ) bool { a := make(map[rune]int) for _, b := range src { a[b]++ } for _, c := range des { if a[c] != 0 { a[c]-- } else { return false } } return true }
Go 解法, 执行用时: 3ms, 内存消耗: 828KB, 提交时间: 2022-06-04
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param des string字符串 * @param src string字符串 * @return bool布尔型 */ func canConstruct( des string , src string ) bool { // write code here var srcMap map[byte]int srcMap = make(map[byte]int, len(src)) for val := 0; val < len(src); val++{ if _, ok := srcMap[src[val]]; ok{ srcMap[src[val]]++ }else{ srcMap[src[val]] = 1 } } for val := 0; val < len(src); val++{ if _, ok := srcMap[des[val]]; !ok{ return false }else{ if srcMap[des[val]] <= 0{ return false } srcMap[des[val]]-- } } return true }
Go 解法, 执行用时: 3ms, 内存消耗: 844KB, 提交时间: 2022-07-13
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param des string字符串 * @param src string字符串 * @return bool布尔型 */ func canConstruct( des string , src string ) bool { // write code here m := make(map[int]int) outer: for _, c := range des { for index, c2 := range src { if c == c2 && m[index] == 0 { //找到这个字符,并且没有使用 m[index]++ continue outer; } } //走到这里说明当前字符找不到 return false } //没有发生异常退出表示所有字符都找到了 return true }