美文网首页
一些题目

一些题目

作者: 李行风 | 来源:发表于2017-10-20 20:17 被阅读0次

    第一题,是求从a与b之间的数相加,简单的实现如下


    def sum_a_to_b(a, b)
            result = 0
        if a.is_a?(Integer) && b.is_a?(Integer)
            if a > b
                result = Array(b..a).sum
            else
                result = Array(a..b).sum
            end
        end
        result
    end
    
    

    以上的实现其实还可以优化,利用连加公式:n(n+1)/2 ,可以有效降低复杂度。

    def sum_a_to_b(a, b)
            result = 0
        if a.is_a?(Integer) && b.is_a?(Integer)
          if a > b
            result = a * (a + 1) / 2 - (b - 1) * b / 2 
          else
            result = b * (b + 1) / 2 - (a - 1) * a / 2 
        end
        else
            result = '请输入数字'
        end
        result
    end
    
    

    继续优化一行代码

    def sum_a_to_b(a, b)
     (a + b) * ((b - a).abs + 1) / 2
    end
    

    测试结果


    image.png

    第二题,一个字符串中是否包含重复的字符


    def is_repeat?(str)
        compare_str = str.upcase
        len = compare_str.length
    
        if len > 24
            return true
        else
            compare_hash = compare_str.each_char.with_index.inject(Hash.new{ |h, k| h[k] = []}) do |init, num|
                init[num[0]] << num[1] + 1
                init
            end
            compare_hash.each do |compare|
                if compare[1].length > 1
                    return true
                end
            end
        end
        return false
    end
    
    
    is_repeat?("avc")
    is_repeat?("avcC")
    is_repeat?("avcv")
    

    第三题,一串乱序数字按从大到小排序输出


    def sort(nums)
        result = ""
        nums_str = nums.to_s
        num_hash = nums_str.each_char.with_index.inject(Hash.new{ |h, k| h[k] = []}) do |init, num|
            init[num[0].to_i] << num[1] + 1
            init
        end
    
        num_hash.each do |key, value|
            value.length.times do 
                result << key.to_s
            end
        end
        result.reverse.to_i
    
    end
    
    sort(12323)
    
    
    

    相关文章

      网友评论

          本文标题:一些题目

          本文链接:https://www.haomeiwen.com/subject/lutbuxtx.html