找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 890|回复: 9

[研讨] 求两字符串最大顺序匹配数

[复制链接]

已领礼包: 1883个

财富等级: 堆金积玉

发表于 2020-2-20 15:51:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
两字符串,如str1="horse",str2="sayhello",结果为2。(若前面选"h"和"o",后面同顺序可选"h"和"o";若前面选择"s"和"e",后面可选"s"和"e"。)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-20 23:26:25 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-2-20 23:27 编辑

如果str1内没有重复的字符,很好算。如str1="abcde",str2="excbade",可以将str1中每个字符对应1,2,3,4,5,
则str2中每个字符对应str1中的位置为5,0,3,2,1,4,5,(其中0表示不存在对应位置),然后统计每个非0数字后大于该数的个数,即5后面有0个大于5的数,3后面有2个大于3的数,2后面有2个大于2的数,1后面有2个大于1的数,4后面有1个大于4的数,故max{0+1,2+1,2+1,2+1,1+1}=3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-20 22:39:42 | 显示全部楼层
_$ (setq str "abcde")
(setq n (strlen str))
(setq i 1 strlst nil)
(while (<= i n)
   (setq j 1 )
   (while (<= j (- n i -1))
      (setq strlst (cons (substr str i j) strlst))
          (setq j (+ j 1))
   )
   (setq i (+ i 1))
)
(reverse strlst)
"abcde"
5
nil
6
("a" "ab" "abc" "abcd" "abcde" "b" "bc" "bcd" "bcde" "c" "cd" "cde" "d" "de" "e")
_$ (setq str "abcde")
(setq n (strlen str))
(defun f (num)(setq k num plst nil)(while (> k 0)(setq k (- k 1))(setq plst (cons k plst))))
(mapcar '(lambda (nn) (cons (- (lsh 1 nn) 1) (mapcar '(lambda (x) (lsh (boole 6 (lsh (- (lsh 1 nn) 1) (* -1 x)) 1) x))  (f (- nn 1))))) (reverse (cdr (f (+ 1 n)))))
"abcde"
5
F
((31 30 28 24 16) (15 14 12 8) (7 6 4) (3 2) (1))
_$

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-20 23:34:29 | 显示全部楼层
如果str1中有重复字符,就复杂些。如str1="intention",str2="execution"。结果应为5。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-21 10:14:04 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-2-21 10:22 编辑

按照字符不重复的思路,若有重复,str2中每个字符对应str1中的位置可能有多个,如str1="intention",str2="execution,str1={(1,"i")(2,"n")(3,"t")(4,"e")(5,"n")(6,"t")(7,"i")(8,"o")(9,"n")}。str2中每个字符对应的位置可能是4,0,4,0,0,(3,6),(1,7),8,(2,5,9)。剩下的问题是如何选取重复位置,使得整体顺序数个数达到最大?所以,选取4,0,4,0,0,6,7,8,9得到最大顺序数个数5。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-21 10:46:52 | 显示全部楼层
若按暴力穷举的方法,要将重复位置个数相乘,不是好办法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5295个

财富等级: 富甲天下

发表于 2020-2-21 13:17:58 | 显示全部楼层
有好的创意并能够实现,是一种快乐!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-2-21 23:03:10 | 显示全部楼层
问题转化为X1有n1种选择,X2有n2种选择,X3有n3种选择,……Xk有nk种选择,如何选择构成的(X1,X2,X3,……Xk)递增顺序数个数最多?

点评

曼哈顿距离。复杂度O(n).  详情 回复 发表于 2020-3-3 22:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 960个

财富等级: 财运亨通

发表于 2020-2-21 23:07:42 | 显示全部楼层
自问自答,谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-3-3 22:09:06 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-3-3 22:10 编辑
aimisiyou 发表于 2020-2-21 23:03
问题转化为X1有n1种选择,X2有n2种选择,X3有n3种选择,……Xk有nk种选择,如何选择构成的(X1,X2,X3,… ...

曼哈顿距离。复杂度O(n).
707.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 10:08 , Processed in 0.463866 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表