如何编写方法:输入数字返回奇数前后加单连字符的合规字符串
Ruby实现奇数前后加连字符的方法
嘿,我来帮你搞定这个需求!咱们要写一个Ruby方法,接收数字后返回符合要求的字符串——每个奇数前后加连字符,但不能以连字符开头或结尾,也不能出现多个连字符连在一起的情况。
思路拆解
要满足这些规则,核心是要判断每个奇数的前后字符状态,避免多余的连字符:
- 先把输入的数字转成字符串,方便逐个字符处理
- 遍历每个字符时,要同时知道当前字符是不是奇数,以及前后相邻的字符是不是奇数
- 只在「当前是奇数,且前一个不是奇数、且不是第一个字符」的时候加前置连字符
- 只在「当前是奇数,且后一个不是奇数、且不是最后一个字符」的时候加后置连字符
完整代码实现
def hyphenate(number) num_str = number.to_s result = [] num_str.chars.each_with_index do |char, index| current_is_odd = char.to_i.odd? prev_is_odd = index > 0 ? num_str[index-1].to_i.odd? : false next_is_odd = index < num_str.length - 1 ? num_str[index+1].to_i.odd? : false # 处理前置连字符:当前是奇数,前一个不是奇数,且不是第一个字符 result << '-' if current_is_odd && !prev_is_odd && index != 0 # 添加当前数字字符 result << char # 处理后置连字符:当前是奇数,后一个不是奇数,且不是最后一个字符 result << '-' if current_is_odd && !next_is_odd && index != num_str.length - 1 end result.join end
测试验证
运行示例输入:
hyphenate(132237847) # 返回 "1-3-22-3-7-84-7"
完全符合要求,不会出现首尾带连字符或者多个连字符的错误情况。
比如遇到相邻奇数的情况,比如hyphenate(112),会返回"11-2",而不是"1-1-2"或者"-11-2-",完美规避了规则禁止的情况。
内容的提问来源于stack exchange,提问作者bdbasinger
相关产品推荐
相关产品推荐

