challenge 文字列の反転

与えられた文字列sを前後逆転したものを返す関数reverse_stringを作成してください。 ただし、sはShift-JISでエンコードされている文字列だと仮定して構いません。

サンプル入出力

>>> print reverse_string("Hello")
olleH
>>> print reverse_string("こんにちは")
はちにんこ
>>> print reverse_string("濁点(だくてん)")
)んてくだ(点濁

Posted feedbacks - OCaml

ascii文字でない場合のみ指定バイト分で移動させます。

確認方法が分からないのでsjisで大丈夫かは分かりません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#load "str.cma";;
open Str;;
let check_ascii str (pos:int) =
  (string_match (regexp "[\000-\127]") str pos);;

let revstr_nbyte ?(byte=3) str =
  let len = String.length str in
  let newstr = String.create len in
  let rec loop i k () =
    if i<1 then newstr
    else
      if (check_ascii str k) then
        loop (i-1) (k+1) (newstr.[i-1] <- str.[k])
      else
        loop (i-byte) (k+byte) (String.blit str k newstr (i-byte) byte)
  in loop (len) 0 ();;


let (pr, strev) = (print_endline, revstr_nbyte) in
  pr (strev "Hello");
  pr (strev "こんにちは");
  pr (strev "濁点(だくてん)");;

Index

Feed

Other

Link

Pathtraq

loading...