`
googya
  • 浏览: 144050 次
  • 性别: Icon_minigender_1
  • 来自: 汉川
社区版块
存档分类
最新评论

寻找最长递增数字子串

阅读更多
    有一个字符串,其中包含了多个数字子串,要求求出最长的递增数字子串,比如,s='asdf1123as456df112365asdfa'中最长递增数字子串是11236.

string="asdfasdfasdf1111112222222356789462124asdfasdfasdfa9874563214756asdfasdfasdfasdfasdfasdfalkjlaskdjflkasdf124578"
s=string.scan(/\d+/)
#t=s[1].split //
#puts t.size
#print t,"\n"
ss=[]
hash={}
max=tt=0
s.each do |t|
    t=t.split //
for i in 0...(t.size)
    if(t[i+1]&&t[i+1]>=t[i])
         ss<<t[i]
        tt+=1
        if(tt>max)
            max=tt
            hash[ss.join('')]=max
        end
    else
        ss<<t[i]
        hash[ss.join('')]=ss.size
        ss=[]
        tt=0
    end
end
end
puts  hash.sort_by {|k,v|k.size}.last[0]
#puts hash




应该会有更简洁的方法的,慢慢再想!!!!
3
1
分享到:
评论
14 楼 orcl_zhang 2010-10-18  
Hooopo 写道
   

虎跑看傻了.
13 楼 Hooopo 2010-10-18  
   
12 楼 orcl_zhang 2010-10-18  
googya 写道
night_stalker 写道
"aaa31e4r23r".scan(/0*1*2*3*4*5*6*7*8*9*/).max_by(&:size)



高招!!!!

ns太猛了.. 
11 楼 googya 2010-10-18  
正则表达式果然很强大!
10 楼 googya 2010-10-18  
night_stalker 写道
"aaa31e4r23r".scan(/0*1*2*3*4*5*6*7*8*9*/).max_by(&:size)



高招!!!!
9 楼 night_stalker 2010-10-18  
"aaa31e4r23r".scan(/0*1*2*3*4*5*6*7*8*9*/).max_by(&:size)
8 楼 orcl_zhang 2010-10-18  
首先用正则找到数字字符串
"aaa31e4r23r".split(/\D+/)

在用collect调用下面的方法,找到每个数字字符串中最长递增数字子串.
找出数字字符串中最长递增数字子串.
t = "238923".chars.to_a
result = []
temp = ""

while !t.empty? do
  temp << t[0] if temp.empty?
  if t[1]
     t[0] <= t[1] ? temp << t[1] : (result << temp;temp = "")
  else
    result << temp
  end
  t.shift
end

puts result.join(',')

然后在冒泡,找到size最长的.
7 楼 googya 2010-10-17  
orcl_zhang 写道
引用
寻找最长递增数字子串

提交完后,悲剧的发现看错题目了....

要不要我帮你删除掉?
6 楼 orcl_zhang 2010-10-17  
引用
寻找最长递增数字子串

提交完后,悲剧的发现看错题目了....
5 楼 googya 2010-10-17  
orcl_zhang 写道
没有必要排序的,求出最大即可.

不好意思这位哥们,是求最长递增数字子串,我刚开始没有说清楚(虽然我代码已经写清楚了)
4 楼 orcl_zhang 2010-10-17  
没有必要排序的,求出最大即可.
3 楼 orcl_zhang 2010-10-17  
lz你代码真的很无语...
s.each do |t| 
    t=t.split
//这里t.size == 1吧,你要干吗.....
for i in 0...(t.size) 
  if(t[i+1]&&t[i+1]>=t[i]) //这一陀是干吗的..
ss<<t[i] 
        hash[ss.join('')]=ss.size 
        ss=[] 
        tt=0

盗用hooopo的代码,修改下.
"aaa31e4r23r".split(/\D+/).collect(&:size).max
2 楼 googya 2010-10-17  
Hooopo 写道
"aaa31e4r23r".split(/\D+/).sort_by{|x| x.size}.last                  



虎跑,不好意思啊,是求最长递增数字子串。当时写掉了这个要求!!! 
1 楼 Hooopo 2010-10-17  
"aaa31e4r23r".split(/\D+/).sort_by{|x| x.size}.last                  

相关推荐

    A Collection of Dynamic Programming Interview Questions Solved in C++

    最长递增子序列问题是在一个数组中找到最长的严格递增的子序列。动态规划能够提供一个高效的解决方案。 文件“Dynamic Programming Interview Questions Solved in C++”中提到的每一个问题都为C++面试者提供了...

    leetcode信封-LeetCode-QA:LeetCode-QA

    最长递增子序列 中等 331 验证二叉树的前序序列化 中等 338 比特位计数 中等 354 俄罗斯套娃信封问题 困难 503 下一个更大元素 II 中等 706 设计哈希映射 简单 1047 删除字符串中的所有相邻重复项 简单 1629 按键...

    编程之法:面试和算法心得-052320401

    6. **出现次数超过一半的数字**:寻找数组中出现次数超过一半的元素,布隆过滤器可以辅助解决。 #### 动态规划 5. **最大连续乘积子串**:求解字符串中最大连续子串的乘积,可以使用动态规划来避免重复计算。 6. **...

    程序员编程艺术:面试和算法心得.pdf

    第一章 字符串 o 1.0 本章导读 o 1.1 旋转字符串 o 1.2 字符串包含 o 1.3 字符串转换成整数 o 1.4 回文判断 o 1.5 最长回文子串 o 1.6 字符串的全排列 o 1.10 本章习题 第二章 数组 o 2.0 本章导读 o 2.1 寻找最小的...

    VC最长子序列源代码

    例如,在一个整数数组中,我们可能寻找一个没有重复数字的最长递增子序列。而在字符串中,最长子序列可能是最长的无重复字符的子串。 Visual C++是一种C++编译器,由微软开发,它提供了一个集成开发环境,支持C++...

    数据结构课程设计报告

    12. 数串:可能是寻找数字序列的特定属性,如最长递增子序列、最长公共子序列等。 13. 求最长公共子串:这是字符串处理中常见问题,可以使用动态规划解决。 14. 求关键点和桥:可能涉及到图的结构分析,寻找图中的...

    HW机考攻略1

    最长连续递增序列寻找最长递增子序列,NC17.最长回文子串通过双指针找到回文串,NC28.最小覆盖子串则需要双指针配合字符串操作。 7. **深搜**:HJ41.称砝码是一个典型的深度优先搜索(DFS)题目,通常涉及递归或栈的...

    leetcode跳跃-LeetCode:力码

    leetcode 跳跃 LeetCode 12.整数转罗马 13.罗马数字转整数 17.电话号码的字母组合 20.有效的括号 ...300.最长递增子序列 322.零钱兑换 509.斐波那契数 36.有效的数独 49.字母异位词分组 45.跳跃游戏Ⅱ

    Leetcode.rar

    动态规划:动态规划是解决最优化问题的强大工具,如“背包问题”、“最长递增子序列”。 学习LeetCode,不仅可以提升编程能力,还可以加深对数据结构和算法的理解。通过实践题目,可以训练解决实际问题的能力,有助...

    算法动态规划 专题 算法动态规划 专题 ppt

    6. **最长递增子序列**: 在一个序列中找到长度最长的严格递增子序列。 **动态规划的特点** 1. **重叠子问题**: 大问题的解往往包含重复计算的子问题,动态规划通过存储子问题的解避免重复计算。 2. **最优子结构*...

    运筹学---动态规划

    许多常见的问题,如背包问题、最短路径问题、最长递增子序列等,都可利用动态规划来解决。动态规划不仅提高了问题解决的效率,而且在许多情况下,它还能够找到问题的最优解。因此,理解和掌握动态规划对于提升个人在...

    动态规划的经典题目 包括分析和解答

    - 最长递增子序列:找到一个序列的最长非降序子序列。 - 最短路径问题:如Floyd-Warshall算法用于寻找图中所有顶点之间的最短路径。 - 最长公共子序列:两个字符串的最长相同子序列。 - 编辑距离:衡量两个字符串...

    2024Leetcode最新解题笔记

    动态规划求最长上升子序列**:这是一个经典的动态规划问题,旨在寻找给定序列中最长的递增子序列,通常使用dp数组来记录每一步的最优解。 #### 二、回溯算法 **回溯算法**是一种通过尝试解决问题的不同可能性来...

    网宿科技笔经

    - **字符串操作**:寻找最长递增子串,可以使用滑动窗口或者动态规划方法。 - **完全二叉树证明**:完全二叉树是每一层都尽可能满的树,最后一层的叶子节点都在左边。 - **二叉树遍历**:需要熟悉前序、中序和...

    lrucacheleetcode-OMSCS_Taiwan_Leetcode:加油!!

    最少有K个重复字符的最长子串 最大限度 0160 两个链表的交集 0148 排序表 AY 0162 寻找峰值元素 0179 最大数 星期日 0131 回文分区 0108 将有序数组转换为二叉搜索树 第 9 周问题列表: 杰森 0277 找名人 0136 单号 ...

    HW-OD机考材料.pdf

    最长连续递增序列**、**NC17.最长回文子串**、**NC28.最小覆盖子串**:寻找序列中的特定模式或最长子序列。 - **HJ41.称砝码**:可能涉及二进制搜索或者动态规划解决平衡问题。 - **leetcode 994.腐烂的橘子**、**...

    浙江大学 acm模板 算法代码实现

    最长子序列问题是指在一个序列中找到最长的递增子序列。 **13.11 最大子串匹配** 最大子串匹配是指在一个字符串中找到最长的重复子串。 **13.12 最大子段和** 最大子段和是指在一个数组中找到连续子数组的最大和。

    c ACM必须掌握的算法.doc

    5. **动态规划**:包括LCS(最长公共子序列)、最长递增子串、三角剖分等经典问题,以及记忆化策略提升效率。 6. **博弈类算法**:如博弈树和二进制搜索,应用于游戏理论问题。 7. **最大团与最大独立集**:在图论...

Global site tag (gtag.js) - Google Analytics