我需要定义'string-right' 程序
(define string-right
(lambda (x)
(substring x (quotient (string-length x) 2) (string-length x))))
对奇数字符串长度不起作用 但程序
(define string-right
(lambda (x)
(substring x (+ (quotient (string-length x) 2) 1)(string-length x))))
对偶数字符串长度不起作用。请帮忙。沮丧。
答案 0 :(得分:1)
假设你的意思是你想要一个没有中间字符串的正确的一半字符串:
在商(第一个选项)中,替换:
(string-length x)
使用:
(+ 1 (string-length x))
如果字符串的长度是偶数,那么 floor((length + 1)/ 2)= length / 2
,否则 floor((length + 1)/ 2)=(length + 1)/ 2
+ 1
部分将排除中间元素
完整的解决方案:
(define string-right
(lambda (x)
(substring x (quotient (+ 1 (string-length x)) 2) (string-length x))))
答案 1 :(得分:0)
尝试这种方法:
(define string-right
(lambda (x)
(substring x (floor (/ (string-length x) 2)))))
如果字符串长度为奇数,则上述过程将包括中间的字符。如果您不想这样,请将floor
替换为ceiling
,并且返回的字符串中不会出现中间字符。
使用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"