0
A
回答
0
橫移QStringList中,比較根和每個字符串:
QString root(QString &a, QString &b)
{
QString str;
for(int i = 0; i < a.length() && i < b.length(); ++i) {
if(a.at(i) == b.at(i))str.push_back(a.at(i));
else break;
}
return str;
}
QString dosth(QStringList &list)
{
QString str;
if(list.isEmpty()) return str;
for(int i = 0; i < list.length(); ++i) {
str = root(str, list.at(i));
}
return str;
}
+0
這不適合我。我必須做一些小改變。在'dosth'中,在for循環之前:'str = list [0]; if(list.size()== 1)return str;'將foor循環變量從'i = 0'改爲'i = 1'。另外,由於列表沒有被修改,所以在兩個函數中,我將參數改爲'const'。 –
2
下面是一個算法:
- 拍攝第一字符串作爲根。
- 對於在列表中的每個項
編輯:一些代碼,我沒有測試過,但 「應該」 的工作。
C++ 03代碼:
QString find_root(const QStringList& list)
{
QString root = list.front();
for(QStringList::const_iterator it = list.begin(); it != list.end(); ++it)
{
if (root.length() > it->length())
{
root.truncate(it->length());
}
for(int i = 0; i < root.length(); ++i)
{
if (root.at(i) != it->at(i))
{
root.truncate(i);
break;
}
}
}
return root;
}
C++ 11代碼:
QString find_root(const QStringList& list)
{
QString root = list.front();
for(const auto& item : list)
{
if (root.length() > item.length())
{
root.truncate(item.length());
}
for(int i = 0; i < root.length(); ++i)
{
if (root[i] != item[i])
{
root.truncate(i);
break;
}
}
}
return root;
}
0
沒有準備解決方案,但編寫新代碼僅需5分鐘:
int commonBeginningLength(const QString &a, const QString &b) {
int maxLen = qMin(a.length(), b.length());
int i=0;
for(int i=0; i<maxLen; ++i)
if (a.at(i)!=b.at(i))
break;
return i;
}
QString comonBegining(const QStringList &list) {
if (list.isEmpty())
return QString();
QString result(list.front());
for(int i=1; i<list.count(); ++i) {
result = result.left(commonBeginningLength(result, list.at(i)));
}
return result;
}
相關問題
- 1. 打印2個字符串之間的所有公共部分
- 2. 如何在PHP中的兩個字符串之間找到最大公共子字符串?
- 3. 查找在另一個字符串列表中有一個項目的子字符串的所有字符串
- 4. 在javascript中找到$ {和}之間的所有子字符串
- 5. 如何拆分字符串列表以查找Haskell中的所有重複項?
- 6. 如何查找列表中的字符串的公用部分<string> C#
- 7. 查找兩個字符串之間的所有子字符串
- 8. 如何找到多個字符串中最長的公共子字符串?
- 9. 查找Python中列表之間不共同的項目
- 10. SQL Server 2005中找到的所有字符之間## ---- ##列排
- 11. SQL - 如何提取分隔符之間的字符串列表?
- 12. 找到字符串之間的部分並將其更改爲
- 13. 如何找到兩個字符串之間的子字符串?
- 14. 查找匹配字符串或部分字符串的所有子目錄
- 15. 如何找到excel中2個字符串之間的字符
- 16. 找到序列中所有目標字符串的索引
- 17. 如何找到字符串向量之間的所有組合在Python
- 18. 在多個Web項目之間共享連接字符串
- 19. 如何查找使用LINQ有共同部分的項目的所有行?
- 20. 看看列表中的所有項目=某些字符串
- 21. 如何在Java中的兩個分隔符之間找到一個字符串?
- 22. C#從公共類和列表中分配字符串
- 23. python在字符串中找到「=」索引的中間部分
- 24. 找到引號之間的所有字符串
- 25. 在列表之間的字符串匹配的項目上組合2列表
- 26. 如何找到兩個單詞之間的字符串的一部分?
- 27. 如何查找引號之間的所有字符串的所有範圍
- 28. 如何在C#中的重複字符串之間找到字符串?
- 29. 如何基於列表中的公共字符串列出列表,Python
- 30. 桶之間的所有項目分佈
是否所有字符串都包含相同的根? – jrok
大多數情況下,他們會 – Srv19
那麼,如果他們不呢?那麼你想找哪個「根」? – jrok