政務(wù)網(wǎng)站建設(shè)索引成都seo招聘信息
目錄
191. 位1的個數(shù) Nnumber of 1-bits??🌟
192. 統(tǒng)計詞頻 Word Frequency??🌟🌟
🌟 每日一練刷題專欄?🌟
Golang每日一練 專欄
Python每日一練 專欄
C/C++每日一練 專欄
Java每日一練 專欄
191. 位1的個數(shù) Nnumber of 1-bits
編寫一個函數(shù),輸入是一個無符號整數(shù)(以二進制串的形式),返回其二進制表達式中數(shù)字位數(shù)為 '1' 的個數(shù)(也被稱為漢明重量)?。
提示:
- 請注意,在某些語言(如 Java)中,沒有無符號整數(shù)類型。在這種情況下,輸入和輸出都將被指定為有符號整數(shù)類型,并且不應(yīng)影響您的實現(xiàn),因為無論整數(shù)是有符號的還是無符號的,其內(nèi)部的二進制表示形式都是相同的。
- 在 Java 中,編譯器使?用二進制補碼記法?來表示有符號整數(shù)。因此,在?示例 3?中,輸入表示有符號整數(shù)?
-3
。
示例 1:
輸入:00000000000000000000000000001011
輸出:3
解釋:輸入的二進制串 00000000000000000000000000001011?中,共有三位為 '1'。
示例 2:
輸入:00000000000000000000000010000000 輸出:1 解釋:輸入的二進制串 00000000000000000000000010000000?中,共有一位為 '1'。
示例 3:
輸入:11111111111111111111111111111101 輸出:31 解釋:輸入的二進制串 11111111111111111111111111111101 中,共有 31 位為 '1'。
提示:
- 輸入必須是長度為?
32
?的?二進制串?。
進階:
- 如果多次調(diào)用這個函數(shù),你將如何優(yōu)化你的算法?
代碼:
package mainimport ("fmt""math/bits"
)func hammingWeight1(num int) int {sum := 0for i := 0; i < 32; i++ {if (num>>i)&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. 統(tǒng)計詞頻 Word Frequency
寫一個 bash 腳本以統(tǒng)計一個文本文件?words.txt
?中每個單詞出現(xiàn)的頻率。
為了簡單起見,你可以假設(shè):
words.txt
只包括小寫字母和?' '
?。- 每個單詞只由小寫字母組成。
- 單詞間由一個或多個空格字符分隔。
示例:
假設(shè)?words.txt
?內(nèi)容如下:
the day is sunny the the the sunny is is
你的腳本應(yīng)當(dāng)輸出(以詞頻降序排列):
the 4 is 3 sunny 2 day 1
說明:
- 不要擔(dān)心詞頻相同的單詞的排序問題,每個單詞出現(xiàn)的頻率都是唯一的。
- 你可以使用一行? Unix pipes ?實現(xiàn)嗎?
代碼:
package mainimport ("bufio""fmt""os""sort""strings"
)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)}
}
調(diào)用pipes命令:
package mainimport ("fmt""os/exec""strings"
)func main() {cmd := exec.Command("bash", "-c", "cat words.txt | awk '{for(i=1; i<=NF; 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])}}
}
🌟 每日一練刷題專欄?🌟
? 持續(xù),努力奮斗做強刷題搬運工!
👍 點贊,你的認可是我堅持的動力!?
🌟?收藏,你的青睞是我努力的方向!?
? 評論,你的意見是我進步的財富!??
??主頁:https://hannyang.blog.csdn.net/?
![]() | Golang每日一練 專欄 |
![]() | Python每日一練 專欄 |
![]() | C/C++每日一練 專欄 |
![]() | Java每日一練 專欄 |