您的位置:首页 > 编程语言 > PHP开发

【PHP】算法基础-字符移位

2017-09-09 12:48 405 查看
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。

你能帮帮小Q吗?

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.

对于每组数据,输出移位后的字符串。

输入

AkleBiCeilD

输出

kleieilABCD

这道题,不能申请额外的空间,就是在原有字符串上操作,还得保证各个字符串的相对位置,利用冒泡排序的思想是最容易想到的处理方法。

<?php
while($str = trim(fgets(STDIN))){
for($i = 0; $i < strlen($str); $i++){
$flag = true;
for($j = 0; $j < strlen($str)-1; $j++){
//如果,当前位置为一个大写字母,并且其后面一位不是大写字母,则交换这两个数的位置,否则不交换
if($str[$j]>='A' && $str[$j]<='Z' && ($str[$j+1]>'Z' || $str[$j+1]<'A')){
$temp = $str[$j];
$str[$j] = $str[$j+1];
$str[$j+1] = $temp;
$flag = false;
}
}
if($flag){//如果一轮循环下来,没有发生交换,则说明都已经交换完毕,退出循环输出结果即可
break;
}
}
echo $str.PHP_EOL;
}


有木有和冒泡排序很像,哈哈!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 php