671. 循环单词

671. 循环单词 

The words are same rotate words if rotate the word to the right by loop, and get another. Count how many different rotate word sets in dictionary.

E.g. picture and turepic are same rotate words.

 注意事项

所有单词均为小写。

样例

Given dict = ["picture", "turepic", "icturep", "word", "ordw", "lint"]
return 3.

"picture", "turepic", "icturep" are same ratote words.
"word", "ordw" are same too.
"lint" is the third word that different from the previous two words.

这道题我犯得主要错误是string的片段赋值不会;程序不精简时间超限;
class Solution {
public:
    /*
     * @param words: A list of words
     * @return: Return how many different rotate words
     */
int countRotateWords(vector<string> words) 
{
// 671. 循环单词 Write your code here
int n=words.size();
if(n==0) return 0;if(n==1) return 1;
vector<int> rept(n,-1);
int result=0;
for(int i=0;i<n;i++)
{
if(rept[i]!=-1||words[i]=="")continue;       
else
{
for(int j=i+1;j<n;j++)
{
if(rept[j]!=-1||words[i].length()!=words[j].length()) continue;
int idx=words[i].find(words[j][0]);
if(idx==-1) continue;
string s0="";
while(true)
{
string s1=string(words[i],idx)+string(words[i],0,idx);
if(s1==words[j])
{
rept[i]=i;rept[j]=i;
break;
}
s0=string(words[i],idx+1);
int idx1=s0.find(words[j][0]);
if(idx1==-1) break;

idx=idx1+idx+1; //截取片段查找的结果要加上截取之前的长度

}

}
result++;
}
}
return result;
}
};
要实现一个简单的生词本应用,我们可以使用Python的数据结构(如字典)来存储单词及其相关信息。以下是一个基础的实现示例: ```python class VocabBook: def __init__(self): self.vocab = {} # 使用字典存储单词和相关数据 # 添加新单词 def add_word(self, word, definition=None, translation=None): if word not in self.vocab: self.vocab[word] = {'definition': definition, 'translation': translation} else: print(f"Word '{word}' already exists.") # 查看单词 def view_word(self, word): if word in self.vocab: print(f"Word: {word}") print(f"Definition: {self.vocab[word]['definition']}") print(f"Translation: {self.vocab[word]['translation']}") else: print("Word not found.") # 删除单词 def remove_word(self, word): if word in self.vocab: del self.vocab[word] print(f"{word} has been removed.") else: print("Word not found.") # 清空单词列表 def clear_vocab(self): self.vocab.clear() print("Vocabulary cleared.") # 退出程序 def exit(self): print("Thank you for using the vocabulary book. Goodbye!") return False # 假设此方法用于循环控制,在实际应用中可能需要更复杂逻辑 # 创建实例并交互使用 book = VocabBook() while True: action = input("Choose an action (add, view, remove, clear, exit): ") if action == "add": word = input("Enter the word to add: ") definition = input("Enter the definition (optional): ") translation = input("Enter the translation (optional): ") book.add_word(word, definition, translation) elif action == "view": word = input("Enter a word to view: ") book.view_word(word) elif action == "remove": word = input("Enter a word to remove: ") book.remove_word(word) elif action == "clear": book.clear_vocab() elif action.lower() == "exit": if book.exit(): break else: print("Invalid action. Please try again.") ``` 这个例子中,我们定义了一个`VocabBook`类,包含上述提到的功能。用户可以通过交互式的命令行界面进行操作。要运行此程序,你需要将这些代码放在一个`.py`文件中,并在命令行中运行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值