我这里有一个php问题。我有2个输入,($ s,$ n),$ s代表一个字符串,$ n是一个整数。问题是:"将每个角色转移到$ s $ n位置"。
例如$ s =" AA",$ n = 2,然后输出是" CC"
我这里有一点问题,如果$ s =" YY",$ n = 2,它会输出" aaaa",但我
希望输出为" aa",我该如何修复我的代码?
下面是我的代码:
$words = str_split($s);
for($i=0;$i<count($words);$i++){
if($words[$i] == " ") {
//if space
continue;
}
else{
for($y=0;$y<$n;$y++)
$words[$i] = ++$words[$i];
}
}
$ans = join("", $words);
print("$ans\n");
非常感谢。
答案 0 :(得分:0)
此解决方案可能不是100%正确。或者可能有更好的解决方案。但是如果长度超过原始长度,我会尝试从字符串中获取子字符串
<?php
$s = "YY";
$n = 2;
$words = str_split($s);
for($i=0;$i<count($words);$i++){
if($words[$i] == " ") {
//if space
continue;
}
else{
for($y=0;$y<$n;$y++){
$cur_len = strlen($words[$i]);
$words[$i] = ++$words[$i];
$new_len = strlen($words[$i]);
if($new_len > $cur_len)
$words[$i] = substr($words[$i], 0,$cur_len);
}
}
}
$ans = join("", $words);
print("$ans\n");
答案 1 :(得分:0)
当你将Y增加2时获得AA的原因是它将它视为一个数字。所以(例如)9 + 1 = 10,所以进位有一个额外的数字。当你递增YY的每个数字时,你将获得两个元素都AA - 因此AAAA输出。
如果您只想要最后一位数字......
$s = "YY";
$n=2;
$words = str_split($s);
for($i=0;$i<count($words);$i++){
if($words[$i] != " ") {
for($y=0;$y<$n;$y++) {
$words[$i]++;
}
$words[$i]= substr($words[$i],-1);
}
}
$ans = join("", $words);
print("$ans\n");