我需要定义“string-right”这个过程
(define string-right
(lambda (x)
(substring x (quotient (string-length x) 2) (string-length x))))不适用于奇数字符串长度,但prcoedure
(define string-right
(lambda (x)
(substring x (+ (quotient (string-length x) 2) 1)(string-length x))))不适用于偶数字符串长度。请帮帮忙。很沮丧。
发布于 2012-09-14 07:37:31
假设你想要字符串的右半部分而不是中间部分:
在商(第一个选项)中,替换为:
(string-length x)通过以下方式:
(+ 1 (string-length x))如果字符串长度为偶数,则floor((length + 1) / 2) = length /2
否则地板((长度+ 1) / 2) =(长度+ 1) /2
+ 1部件将排除中间元素
完整的解决方案:
(define string-right
(lambda (x)
(substring x (quotient (+ 1 (string-length x)) 2) (string-length x))))发布于 2012-09-14 07:46:07
尝试以下方法:
(define string-right
(lambda (x)
(substring x (floor (/ (string-length x) 2)))))如果字符串长度为奇数,则上述过程将包括中间的字符。如果你不想这样,用ceiling替换floor,中间的字符将不会出现在返回的字符串中。
使用floor的一些示例
(string-right "") ; => ""
(string-right "a") ; => "a"
(string-right "ab") ; => "b"
(string-right "abc") ; => "bc"
(string-right "abcd") ; => "cd"
(string-right "abcde") ; => "cde"使用ceiling的一些示例
(string-right "") ; => ""
(string-right "a") ; => ""
(string-right "ab") ; => "b"
(string-right "abc") ; => "c"
(string-right "abcd") ; => "cd"
(string-right "abcde") ; => "de"https://stackoverflow.com/questions/12416160
复制相似问题