心の旅 blog

心だけでも旅に出れる

【いろんな言語で書いてみた】文字列を逆に並び替える関数を作成せよ

PHP

<?php
/**
 * 文字を逆順にする
 *
 * @param string $str
 * @return string
 */
function reverseString($str)
{
  $length = mb_strlen($str, "UTF-8");

  $reverse = "";
  for($i=$length-1; $i>=0; $i--) {
    $reverse .= mb_substr($str, $i, 1, "UTF-8");
  }

  return $reverse;
}


$str = "あい うえお abcd efg";
var_dump(reverseString($str));

JavaScript

/**
 * 文字列を逆にする
 * @param [stinrg] str
 * @return [string]
 */
function reverseString(str) {
  var i, strs="";
  for(i=(str.length-1); i>=0; i--) {
    strs += str.substr(i, 1);
  }
  return strs;
}

var str = "あいう  えお abcdefg";
console.log(reverseString(str))

Ruby

# 文字列を逆にする関数
# @param [string] str 文字
# @return [string]
def reverse_string(str)
  reverse = ""
  str.length.downto(0) do |i|
     reverse << str[i, 1]
  end
  return reverse
end

str = "あいう えお abcdrfg "
puts reverse_string(str)

Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def reverse_string(str):
  u"""指定した文字列を逆さにする関数

  Keyword arguments:
  str -- string
  """

  reverse = ""
  for i in range(len(str)-1, -1, -1):
    reverse = reverse + str[i:i+1]

  return reverse

if __name__ == "__main__":
  str = u"あ いうえお ab  cdefg"
  print reverse_string(str)

Go

package main

import "fmt"

//import "unicode/utf8"

const str string = "あいう えお abc defg "

func ReverseString(str string) string {

>-r := []rune(str)
>-var reverse string
>-for i := len(r) - 1; i >= 0; i-- {
>->-reverse += string(r[i : i+1])
>-}

>-return reverse
}

func main() {
>-// 文字列を逆にする
>-fmt.Println(ReverseString(str))
}

Elixir

#
# 指定した文字列を逆さにする
#

defmodule ReverseString do
  def main(str) do
    length = String.length(str)
    loop(str, 0, length, [])
  end

  def loop(str, pos, length, r) do
    if pos < length do
      val = String.at(str, pos)
      loop(str, pos+1, length, [val|r])
    else
      IO.puts r
    end
  end
end


str = "あ いうえお abcdefg  "
ReverseString.main(str)