开发者社区> 问答> 正文

遇到一个Password问题,求解答。

Tom 在期末考完试以后学习了 Python 语言,他发现 Python 语言确实是简洁又强大,在他学完字符串以后,他写了一个随机生成密码的 python 文件。原理是这样的,输入一个字符串 s,然后系统会随机将这个 s 重新任意排序,然后又生成两个字符串 s1 和 s2,并拼接起来最终生成随机密码 str = s1+ s+s2。现在 Tom 有一个问题要问你,每次给你两个字符串,一个是 s( 表示输入的字符串),一个是str(表示产生的随机字符串),问这两个字符串是否符合上述要求的原理?如果符合输出 YES,否则输出 NO。1<=s,str<=100输入两个字符串,一个是s,表示输入的字符串,一个是str,表示产生的随机字符串(1<=s,str<=100)输出内容为一行字符串,如果符合题意中的原理输出 "YES",否则输出 "NO"。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 16:59:14 634 0
1 条回答
写回答
取消 提交回答
  • 1.将提供的字符串转换为字符数组 s1 和 str1 2.用一个长度为 26 的 int 型数组对密码中各个字符出现的次数进行统计。 3.从第一个字符开始,对之后的挨个序列进行判断 (1如果 s1中有这个字符 , 则在S中将这个字符的个数减1(减了之后判断该字符个数是否小于 0),同时将 count+1 若减完后S中对应字符个数小于0,则表示该序列与s1 不匹配,则将 count重置为 0, 并使用 temp对 S进行重置 , 然后直接跳到下一个字符进行判断。 (2)如果从某个字符 (str1[i]) 开始之后的一段序列的值全部为密码字符序列中的值(即count 的值=s1 中字符的个数 ),则代表这个就是密码,可以直接输出"YES" 了 (3)如果对整个 str1 遍历一遍后仍找不到与 s1 匹配的序列 , 则表示 str1 中没有密码 ,则输出 "NO" 特殊情况:如果随机字符串 str 的长度小于密码字符串 s 的长度 , 则肯定无法匹配成功 ,这个时候就直接返回 "NO" 时间复杂度 : O(n^2) 空间复杂度 : O(n) 因此输入:"abc" "xxxcabyyy" 输出:"YES"

    2021-12-23 18:49:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载