Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中查找字符串是否是按字母顺序排列的单词?_Ruby_String - Fatal编程技术网

在Ruby中查找字符串是否是按字母顺序排列的单词?

在Ruby中查找字符串是否是按字母顺序排列的单词?,ruby,string,Ruby,String,提示是编写一个方法ordered_word?,该方法返回单词中的字母是否按字母顺序出现。假设字符串只包含小写字母,没有空格或标点符号。我的解决方案如下: def ordered_word?(word) letters=word.split("") (0..(letters.length-1)).all? do |i| if letters[i]<=letters[i+1] return true end end end def有序单词?(单词)

提示是编写一个方法ordered_word?,该方法返回单词中的字母是否按字母顺序出现。假设字符串只包含小写字母,没有空格或标点符号。我的解决方案如下:

def ordered_word?(word)
  letters=word.split("")
  (0..(letters.length-1)).all? do |i|
    if letters[i]<=letters[i+1]
      return true
    end
  end 
end
def有序单词?(单词)
字母=word.split(“”)
(0..(字母长度-1))。全部?我知道吗|

如果字母[i],
返回
是从整个方法返回的。您只需要从块中“返回”,不指定
return
,只依赖块的最后一行作为返回值,如下所示:

def ordered_word?(word)
  letters=word.split("")
  (0..(letters.length-1)).all? do |i|
    letters[i]<=letters[i+1]
  end
end
def有序单词?(单词)
字母=word.split(“”)
(0..(字母长度-1))。全部?我知道吗|

字母[i]返回的
是从整个方法返回的。您只需要从块中“返回”,不指定
return
,只依赖块的最后一行作为返回值,如下所示:

def ordered_word?(word)
  letters=word.split("")
  (0..(letters.length-1)).all? do |i|
    letters[i]<=letters[i+1]
  end
end
def有序单词?(单词)
字母=word.split(“”)
(0..(字母长度-1))。全部?我知道吗|

字母[i]一个非常简单的比较是:

word.chars.sort.join == word
这样做的目的是将字符串中的字符作为一个数组,按字母数字对它们进行排序,然后将它们重新组合成一个字符串。然后将此字符串与原始字符串进行比较,如果相等,则不进行重新排序,并且该字符串已排序

如果您想将其作为一种方法扩展到
字符串
类:

class String

  def ordered?
    chars.sort.join == self
  end
end

一个非常简单的比较是:

word.chars.sort.join == word
这样做的目的是将字符串中的字符作为一个数组,按字母数字对它们进行排序,然后将它们重新组合成一个字符串。然后将此字符串与原始字符串进行比较,如果相等,则不进行重新排序,并且该字符串已排序

如果您想将其作为一种方法扩展到
字符串
类:

class String

  def ordered?
    chars.sort.join == self
  end
end


旁白:
i
的最大值是多少?这对
字母[i+1]
意味着什么?很简单,“abc”的输入将失败。
arr=word.chars;ARR==ARR.SCORE  @ SaGARPANDYA:这将只产生一个单词中的字母数组,按排序顺序。@ USER 1934 428,它不只是产生[排序的数组],考虑这个轻微的变化,清晰:<代码> ARR=Word.CARS;已排序=(arr==arr.sort)
。也就是说,代码没有分配arr.sort..Arrrgh!的结果!我错过了双等号。你说得对。旁白:
i
的最大值是多少?这对
字母[i+1]
意味着什么?很简单,“abc”的输入将失败。
arr=word.chars;ARR==ARR.SCORE  @ SaGARPANDYA:这将只产生一个单词中的字母数组,按排序顺序。@ USER 1934 428,它不只是产生[排序的数组],考虑这个轻微的变化,清晰:<代码> ARR=Word.CARS;已排序=(arr==arr.sort)
。也就是说,代码没有分配arr.sort..Arrrgh!的结果!我错过了双等号。你说得对,好主意!在第一个示例中,我认为您需要
.split(//)
。或者
.char
作为第二个。@I这是一个很好的调用,我的“初稿”中的剪切粘贴错误,lol。修复了第一个示例以匹配我想要的第二个示例。好主意!在第一个示例中,我认为您需要
.split(//)
。或者
.char
作为第二个。@如果调用正确,请从我的“初稿”中剪切粘贴错误,lol。修复了第一个示例以匹配我想要的第二个示例。这里提出的第二个解决方案是最好的,因为它不会创建任何不必要的中间对象,尽管建议使用
故障案例,除非
'abC'
不被认为是“有序的”。但是,第一个解决方案也可以缩短,并避免使用
数组
,这样
(0…word.length)。所有?{| i |单词[i]是的,第一种解决方案之所以存在,是因为它是OP的代码,只需对代码进行最小的更改即可使其正常工作。
downcase
也是一个好主意,但提示中只使用小写字符,因此在本例中没有必要。这里提出的第二种解决方案是最好的,因为它不会创建任何不必要的中间对象,尽管除非
'abC'
不被认为是“有序的”,否则建议使用一个
。但是,也可以缩短第一个解决方案,并避免
数组
(0…word.length)。所有?{i | word[i]是的,第一个解决方案之所以存在,是因为它是OP的代码,只需对其进行最小的更改即可使其正常工作。
downcase
也是一个好主意,但提示声明只使用小写字符,因此在本例中不必如此