小q最近遇到了乙個難題:把乙個字串的大寫字母放到字串的後面,各個字元的相對位置不變,且不能申請額外的空間。
你能幫幫小q嗎?
輸入描述:
輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.
輸出描述:
對於每組資料,輸出移位後的字串。
輸入例子:
aklebiceild
輸出例子:
kleieilabcd
這題的給出的乙個提醒點是不要申請額外的空間,那麼我們在main函式中就不能初始化任何變數,我第一時間想到的是構造乙個函式,對字串進行拼接成string之後再返回,這個比較簡單,但是好像有點投機取巧了。
#include
#include
using
namespace
std;
string sort(string str)
return res1+res2;
}int main()
對原字串進行操作,如下:
從str末尾開始掃瞄,當遇到第乙個大寫的字母時,開始從這個字母往後面走,交換這個大寫字母後面是小數的字母,每次直到交換完,這時候就完成了第乙個字母的移位。
之後從之前交換的這個大寫字母的位置繼續往前掃瞄,掃到第二個大寫字母,重複以上過程,直到掃完整個陣列。
#include
#include
using namespace std;
int main()
swap(str[j],str[j-1]);}}
}cout<0;}
//1.用stl的partition演算法直接搞定
#include
#include
using
namespace
std;
bool islower(charc)
intmain()
}
//2.這個有點機智了,個人比較服這個答案的主人=_=|
#include
#include
using namespace std;
int main()
}return0;}
//根據題意輸出了正確結果...
//這個題仔細看看答案- -把大小寫分開輸出就可以了。
牛客網答題筆記 字串變型
輸入描述 給定乙個字串s以及它的長度n 1 n 500 輸出描述 請返回變形後的字串。題目保證給定的字串均由大小寫字母和空格構成。輸入例子 this is a sample 16輸出例子 sample a is this 這道題目就是簡單的字串變換的題目,涉及到大小寫轉換和逆序,注意區分邊界條件即可...
牛客網答題筆記 構造佇列
小明同學把1到n這n個數字按照一定的順序放入了乙個佇列q中。現在他對佇列q執行了如下程式 while q.empty 佇列不空,執行迴圈 做取出隊頭的值操作的時候,並不彈出當前隊頭。小明同學發現,這段程式恰好按順序輸出了1,2,3,n。現在小明想讓你構造出原始的佇列,你能做到嗎?輸入描述 第一行乙個...
牛客網答題筆記 構造回文
給定乙個字串s,你可以從中刪除一些字元,使得剩下的串是乙個回文串。如何刪除才能使得回文串最長呢?輸出需要刪除的字元個數。輸入描述 輸入資料有多組,每組包含乙個字串s,且保證 1 s.length 1000.輸出描述 對於每組資料,輸出乙個整數,代表最少需要刪除的字元個數。輸入例子 abcda goo...