博客
关于我
HDU 6208 The Dominator of Strings (字符串find函数暴力过)
阅读量:372 次
发布时间:2019-03-05

本文共 1588 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要找到一个字符串,使得其他所有给定的字符串都是它的子串。如果存在这样的字符串,我们需要返回它;否则,返回"No"。

方法思路

  • 问题分析:我们需要找到一个最长的字符串,这个字符串应该是其他所有字符串的子串。如果没有这样的字符串,返回"No"。最长字符串可能有多个,但只要其中一个满足条件即可。

  • 步骤

    • 读取所有字符串。
    • 找出所有最长的字符串。
    • 对于每个最长的字符串,检查其他所有字符串是否都是它的子串。
    • 如果找到满足条件的字符串,返回它;否则,返回"No"。
  • 优化:使用字符串操作和查找方法来高效地检查子串关系,避免直接使用低效的算法。

  • 解决代码

    #include 
    #include
    #include
    #include
    #include
    using namespace std;int main() { ios::sync_with_stdio(false); int t = 0; vector
    all_strs; string line; // 读取输入 for (; t < 1; ) { getline(line); istringstream iss(line); int n_i = 0; string s_i; if (iss >> n_i >> s_i) { all_strs.push_back(s_i); t++; } else { // 无法读取有效输入,假设题目中没有这种情况 // 可以处理错误情况,比如t++,继续读取下一个 t++; } } if (all_strs.empty()) { cout << "No" << endl; return; } // 找出最长的字符串 int max_len = 0; vector
    candidates; for (const string& s : all_strs) { if (s.length() > max_len) { max_len = s.length(); candidates.clear(); candidates.push_back(s); } else if (s.length() == max_len) { candidates.push_back(s); } } // 检查每个候选是否是其他所有字符串的子串 for (const string& s_candidate : candidates) { bool valid = true; for (const string& s : all_strs) { if (s.empty()) { continue; } size_t pos = s_candidate.find(s); if (pos == string::npos) { valid = false; break; } } if (valid) { cout << s_candidate << endl; return; } } // 没找到满足条件的字符串 cout << "No" << endl; return;}

    代码解释

  • 读取输入:使用getlineistringstream来读取输入,确保正确处理多个空格和换行符。
  • 找出最长字符串:遍历所有字符串,记录最长的字符串及其位置。
  • 检查子串:对于每个最长的字符串,检查其他所有字符串是否是它的子串。使用find方法来查找子串位置。
  • 输出结果:如果找到满足条件的字符串,输出它;否则,输出"No"。
  • 这种方法确保了在处理大量字符串时的效率,并且能够正确找到满足条件的字符串。

    转载地址:http://vrbwz.baihongyu.com/

    你可能感兴趣的文章
    shell编程(六)语言编码规范之(变量)
    查看>>
    linux杂谈之特殊字符的打印和在各种软件如何打出
    查看>>
    vim杂谈(三)之配色方案
    查看>>
    vim杂谈(五)之vim不加载~/.vimrc
    查看>>
    Linux杂谈之终端快捷键
    查看>>
    vimscript学习笔记(二)预备知识
    查看>>
    vimscript学习笔记(三)信息打印
    查看>>
    awk杂谈之数组习题
    查看>>
    SSM项目中遇到Could not autowire. No beans of ‘XXX‘ type found.错误
    查看>>
    Linux网络属性配置详解
    查看>>
    Python(三十)类的理解
    查看>>
    Extjs布局详解
    查看>>
    Android数据库
    查看>>
    C语言之指针再涉(二)
    查看>>
    Linux基础命令(十四)软件安装的后续
    查看>>
    Perl(二)Perl简介
    查看>>
    HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
    查看>>
    keil左侧文件调整方法
    查看>>
    本地分支关联远程分支
    查看>>
    STM8 GPIO模式
    查看>>