摘要:題目描述循環(huán)單詞一個單詞循環(huán)右移得到另一個單詞。輸出循環(huán)單詞種數(shù)。注意如果單詞沒有和任何單詞構(gòu)成循環(huán)單詞,那么也為一種循環(huán)單詞,。
題目描述
循環(huán)單詞:一個單詞循環(huán)右移得到另一個單詞。 例如:picture和turepic屬于一種循環(huán)單詞。 給出n個單詞,統(tǒng)計有多少種循環(huán)單詞。輸入
輸入n+1行 第一行為單詞個數(shù)n(n:[1,50]) 接下來n行,每一行一個單詞,小寫構(gòu)成。輸出
循環(huán)單詞種數(shù)。思路
從第一個單詞開始,遍歷每個單詞。
每個沒有被統(tǒng)計過的單詞i都和后面所有沒有統(tǒng)計過的單詞j比較,是否構(gòu)成循環(huán)單詞。
如果構(gòu)成循環(huán)單詞且該循環(huán)單詞沒有被統(tǒng)計過,統(tǒng)計數(shù)cont+1并且標(biāo)記j為統(tǒng)計過use[j]=true;
如果構(gòu)成循環(huán)單詞但是沒被統(tǒng)計過,則標(biāo)記j為統(tǒng)計過use[j]=true,不再統(tǒng)計;
如果不夠循環(huán)單詞,則不統(tǒng)計也不標(biāo)記,不做任何操作。
注意:如果單詞i沒有和任何單詞構(gòu)成循環(huán)單詞,那么也為一種循環(huán)單詞,count+1。
tips:字符串循環(huán)右移使用substring方法
use[i]記錄第i個單詞是否被統(tǒng)計過
count用來統(tǒng)計循環(huán)單詞個數(shù)
flag表示目前正在訪問的這個循環(huán)單詞是否被統(tǒng)計過,如果被統(tǒng)計過就不再統(tǒng)計
while(line=readline()){ let n = parseInt(line); let strArr = new Array(); let use = []; for(let i = 0; i < n; i++){ strArr[i] = new Array(readline()); use[i] = false; } let count = 0; let flag = false; for(let i = 0; i < n; i++){ if(!use[i]){ //單詞i沒有被統(tǒng)計過 use[i] = true; //標(biāo)記單詞i被統(tǒng)計過 flag = false; //目前該種循環(huán)單詞沒有被統(tǒng)計過 for(let j = i+1; j < n; j++){ //和i單詞后面的每個沒有被統(tǒng)計過的 單詞比較 if(!use[j]){//只和沒有被統(tǒng)計過的單詞j比較 if(same(strArr[i],strArr[j])){//比較i和j是否為循環(huán)單詞 if(!flag){//如果這種循環(huán)單詞沒有統(tǒng)計,則統(tǒng)計+1 count++; flag = true; } use[j] = true; } } } if(!flag){//單詞i這種循環(huán)單詞沒有被統(tǒng)計過,不和任何單詞構(gòu)成循環(huán)單詞 count++; } } } print(count); } //判斷兩個單詞是否為循環(huán)單詞 function same(stra, strb){ //轉(zhuǎn)成字符串類型,否則為對象object類型,length=1 let str1 = new String(stra); let str2 = new String(strb); if(str1.length != str2.length){//長度不一樣必然不能構(gòu)成循環(huán)單詞 return false; } for(let i = 0; i < str1.length; i++){ //循環(huán)右移,每次右移一位,比較兩個單詞是否相等 //字符串循環(huán)右移使用substring方法 let str = str1.substring(i)+ str1.substring(0,i); if(str == str2){ return true; } } return false; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97168.html
摘要:中的算法附道面試常見算法題解決方法和思路關(guān)注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現(xiàn)場面試,檢查編程技能和文化契合度。值得記住的數(shù)組方法有和。一個好的解決方案是使用內(nèi)置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關(guān)注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現(xiàn)場面試,檢查編程...
摘要:基于概率論的分類方法樸素貝葉斯概述貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。另外一種有效計算條件概率的方法稱為貝葉斯準(zhǔn)則。可以在任意的分類場景中使用樸素貝葉斯分類器,不一定非要是文本。 基于概率論的分類方法:樸素貝葉斯 1. 概述 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎(chǔ)—...
摘要:規(guī)則使用語言,讓函數(shù)獲取傳遞的參數(shù)并返回字符串中的最大單詞。忽略字符串中標(biāo)點符號并假設(shè)不會為空。測試用例思路通過過濾字符串,并把字符串根據(jù)空格符轉(zhuǎn)換成字符串?dāng)?shù)組通過循環(huán)把獲取字符串?dāng)?shù)組中的長度最長的字符串 雖然都是很簡單的算法,每個都只需5分鐘左右,但寫起來總會遇到不同的小問題,希望大家能跟我一起每天進(jìn)步一點點。更多的小算法練習(xí),可以查看我的文章。 規(guī)則 Using the JavaS...
摘要:第題反轉(zhuǎn)字符串中的單詞給定一個字符串,你需要反轉(zhuǎn)字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。示例輸入輸出注意在字符串中,每個單詞由單個空格分隔,并且字符串中不會有任何額外的空格。 LeetCode 第557題 557. 反轉(zhuǎn)字符串中的單詞 III 給定一個字符串,你需要反轉(zhuǎn)字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。 示例 1: 輸入: Lets tak...
摘要:方法二提供者沐辰樓姬采用對象的方法取值優(yōu)化內(nèi)部循環(huán)性能確認(rèn)末尾字符算法挑戰(zhàn)檢查一個字符串是否以指定的字符串結(jié)尾。方法一方法二提供者沐辰樓姬使用數(shù)組對象方法,把數(shù)組的第一個元素從其中刪除,并返回第一個元素的值。 showImg(https://segmentfault.com/img/remote/1460000009702368?w=1269&h=541); 前言 偶然看到W3Csch...
閱讀 2138·2021-09-27 14:04
閱讀 1883·2019-08-30 15:55
閱讀 1707·2019-08-30 13:13
閱讀 1076·2019-08-30 13:07
閱讀 2754·2019-08-29 15:20
閱讀 3247·2019-08-29 12:42
閱讀 3345·2019-08-28 17:58
閱讀 3606·2019-08-28 17:56