老鹰网站建设,wordpress 4.4.7,05网,怎么建设网站手机网站制作价格目录
191. 位1的个数 Nnumber of 1-bits #x1f31f;
192. 统计词频 Word Frequency #x1f31f;#x1f31f;
#x1f31f; 每日一练刷题专栏 #x1f31f;
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日一练 专栏 191. 位1的个数 Nnum…
目录
191. 位1的个数 Nnumber of 1-bits
192. 统计词频 Word Frequency 每日一练刷题专栏
Golang每日一练 专栏
Python每日一练 专栏
C/C每日一练 专栏
Java每日一练 专栏 191. 位1的个数 Nnumber of 1-bits
编写一个函数输入是一个无符号整数以二进制串的形式返回其二进制表达式中数字位数为 1 的个数也被称为汉明重量。
提示
请注意在某些语言如 Java中没有无符号整数类型。在这种情况下输入和输出都将被指定为有符号整数类型并且不应影响您的实现因为无论整数是有符号的还是无符号的其内部的二进制表示形式都是相同的。在 Java 中编译器使用二进制补码记法来表示有符号整数。因此在 示例 3 中输入表示有符号整数 -3。
示例 1
输入00000000000000000000000000001011
输出3
解释输入的二进制串 00000000000000000000000000001011 中共有三位为 1。
示例 2
输入00000000000000000000000010000000
输出1
解释输入的二进制串 00000000000000000000000010000000 中共有一位为 1。示例 3
输入11111111111111111111111111111101
输出31
解释输入的二进制串 11111111111111111111111111111101 中共有 31 位为 1。提示
输入必须是长度为 32 的 二进制串 。
进阶
如果多次调用这个函数你将如何优化你的算法
代码
package mainimport (fmtmath/bits
)func hammingWeight1(num int) int {sum : 0for i : 0; i 32; i {if (numi)1 1 {sum}}return sum
}func hammingWeight2(num int) int {sum : 0for num ! 0 {num num - 1sum}return sum
}func hammingWeight3(num int) int {return bits.OnesCount32(uint32(num))
}func main() {n : 0b00000000000000000000000000001011a : hammingWeight1(n)b : hammingWeight2(n)c : hammingWeight3(n)fmt.Println(a, b, c)n 0b00000000000000000000000010000000a hammingWeight1(n)b hammingWeight2(n)c hammingWeight3(n)fmt.Println(a, b, c)n 0b11111111111111111111111111111101a hammingWeight1(n)b hammingWeight2(n)c hammingWeight3(n)fmt.Println(a, b, c)
}输出
3 3 3 1 1 1 31 31 31 192. 统计词频 Word Frequency
写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。
为了简单起见你可以假设
words.txt只包括小写字母和 。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。
示例:
假设 words.txt 内容如下
the day is sunny the the
the sunny is is你的脚本应当输出以词频降序排列
the 4
is 3
sunny 2
day 1说明:
不要担心词频相同的单词的排序问题每个单词出现的频率都是唯一的。你可以使用一行 Unix pipes 实现吗
代码
package mainimport (bufiofmtossortstrings
)func main() {words : make(map[string]int)file, err : os.Open(words.txt)if err ! nil {fmt.Println(err)}defer file.Close()scanner : bufio.NewScanner(file)scanner.Split(bufio.ScanWords)for scanner.Scan() {word : scanner.Text()words[word]}if err : scanner.Err(); err ! nil {fmt.Println(err)}type kv struct {Key stringValue int}var ss []kvfor k, v : range words {ss append(ss, kv{k, v})}sort.Slice(ss, func(i, j int) bool {return ss[i].Value ss[j].Value})for _, kv : range ss {fmt.Printf(%s %d\n, kv.Key, kv.Value)}
}调用pipes命令
package mainimport (fmtos/execstrings
)func main() {cmd : exec.Command(bash, -c, cat words.txt | awk {for(i1; iNF; i) count[$i]} END {for (w in count) print w, count[w]})out, err : cmd.Output()if err ! nil {fmt.Println(err)}lines : strings.Split(string(out), \n)for _, line : range lines {if line ! {words : strings.Split(line, )fmt.Printf(%s %s\n, words[1], words[0])}}
}每日一练刷题专栏
✨ 持续努力奋斗做强刷题搬运工 点赞你的认可是我坚持的动力 收藏你的青睐是我努力的方向
✎ 评论你的意见是我进步的财富
☸ 主页https://hannyang.blog.csdn.net/ Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏