344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
344.反转字符串
题目链接 :
Code :
class Solution {
public:
void reverseString(vector<char>& s) {
int length_s = s.size();
char char_Cache ;
int length_Half_s = ( length_s / 2 ) ; // 下 取 整
if(length_s % 2 != 0 )
{
}
else
{
}
for(int i = 0 ; i < length_Half_s ; i++ )
{
char_Cache = s[ (length_s - 1 ) - i ] ; // Logic
// Logic 表示 强 的 代码 布置 ,/ 结构 布置
s[(length_s - 1 ) - i ] = s[i] ;
s[i] = char_Cache ;
}
}
};
541. 反转字符串II
题目链接 :
Code :
class Solution {
public:
string reverseStr(string s, int k) {
// 预制 参数
int length_s_From_Count = 0 ;
int i_Work = 0 ;
while(s[i_Work] != '\0')
{
length_s_From_Count++ ;
i_Work ++ ;
}
int k_Multiply_2 = k * 2 ;
int k_Divide_2_Floor = k / 2 ;
int num_Batch_Process_Str_s = length_s_From_Count / k_Multiply_2 ;
int num_CharRemaining = length_s_From_Count % k_Multiply_2 ; // less than ( 2 * k )
char* array_Char_For_Cache ;
array_Char_For_Cache = new char[length_s_From_Count];
// 处理 Part
//cout <<"num_CharRemaining_Divide_2_Floor : " << num_CharRemaining<<endl;
for( int i_Batch = 0 , i_Work2 = 0 ; i_Batch < num_Batch_Process_Str_s ; i_Batch++ ) // i_Work2 = i_Work2 + k // i_Work2 处理 Part 调整 字符串 时 的 工作 变量 Batch 首地址 的 构建 i_Batch “ Batch 下标 ”
{
i_Work2 = i_Batch * ( 2 * k) ;
int i_Work3 = (i_Batch + 1 ) * ( 2 * k ) - k - 1 ;
for(int index_SecondFloor = 0 ; index_SecondFloor < k_Divide_2_Floor ;index_SecondFloor ++ )
{
char char_Cache = s[i_Work3];
//字符数组 处理
// 字符 数组 的 循环 工作 的 后 半 部分 不要 忘了 进行 处理
// / 字符串 处理 ? 好像 是 自动 Allocate 新 的 字符串 ;
array_Char_For_Cache[i_Work3] = s[i_Work2] ;
array_Char_For_Cache[i_Work2] = s[i_Work3] ;
i_Work2++ ;
i_Work3-- ;
}
if(k % 2 != 0 )
{
array_Char_For_Cache[i_Work2] = s[i_Work2] ;
}
i_Work2 = (i_Batch + 1 ) * ( 2 * k ) - k ;
for(int i = 0 ; i < k ; i++)
{
array_Char_For_Cache[i_Work2] = s[i_Work2] ;
i_Work2 ++ ;
}
}
int num_CharRemaining_Divide_2_Floor = num_CharRemaining / 2 ;
//cout<<" num_CharRemaining_Divide_2_Floor : " << num_CharRemaining_Divide_2_Floor <<endl;
//cout << "111111111111" << endl;
//cout<<"num_CharRemaining : "<<num_CharRemaining<<endl;
if(num_CharRemaining <= k )
{
//cout << "111111111111" << endl;
int i_Work2 = ( (num_Batch_Process_Str_s ) * ( 2 * k ) ) ;
int i_Work3 = ( (num_Batch_Process_Str_s ) * ( 2 * k ) - 1 ) + num_CharRemaining ;
for(int i = 0 ; i < num_CharRemaining_Divide_2_Floor ; i++ )
{
array_Char_For_Cache[i_Work3] = s[i_Work2] ;
array_Char_For_Cache[i_Work2] = s[i_Work3] ;
i_Work2 ++ ;
i_Work3 -- ;
}
if(num_CharRemaining % 2 != 0 || num_CharRemaining == 1)
{
array_Char_For_Cache[i_Work2] = s[i_Work2] ;
}
}
else
{
//cout << "222222222222" << endl;
int i_Work2 = ( (num_Batch_Process_Str_s ) * ( 2 * k ) ) ;
int i_Work3 = ( (num_Batch_Process_Str_s ) * ( 2 * k ) - 1 ) + k ;
//cout<<"i_Work2 : "<<i_Work2<<endl;
//cout<<"i_Work3 : "<<i_Work3<<endl;
for(int i = 0 ; i < k_Divide_2_Floor ; i++ )
{
array_Char_For_Cache[i_Work3] = s[i_Work2] ;
array_Char_For_Cache[i_Work2] = s[i_Work3] ;
i_Work2 ++ ;
i_Work3 -- ;
//cout<<i<<endl;
}
if(k % 2 != 0 )
{
array_Char_For_Cache[i_Work2] = s[i_Work2] ;
}
// 字符 数组 的 循环 工作 的 后 半 部分 不要 忘了 进行 处理
i_Work2 = ( (num_Batch_Process_Str_s ) * ( 2 * k ) ) + k ;
int temp_Diff = num_CharRemaining - k ;
for(int i = 0 ; i < temp_Diff ; i++)
{
array_Char_For_Cache[i_Work2] = s[i_Work2] ;
i_Work2 ++ ;
}
}
//cout<<"333333333333"<<endl;
string str_For_Return = "" ;
//cout<<"length_s_From_Count : "<<length_s_From_Count<<endl;
for(int i = 0 ; i < length_s_From_Count ; i++ )
{
str_For_Return += array_Char_For_Cache[i] ;
//cout<<"array_Char_For_Cache[i] : " << array_Char_For_Cache[i]<<endl;
//cout<<str_For_Return<<endl;
//cout<< 44444444444<<endl;
}
//cout<<str_For_Return<<endl;
//str_For_Return += '\0';
//cout<< 55555555555<<endl;
return str_For_Return ;
// // 动态 处理
// while()
// {
// if( s[i_Work] != '\0' )
// {
// }
// }
}
};
卡码网:54.替换数字
题目链接 :
54. 替换数字(第八期模拟笔试) (kamacoder.com)
Code :
#include<iostream>
#include<string>
using namespace std ;
int main()
{
string s ,s2 ,s3 ;
//int length_s ;
char * array_Char_Chache ;
std::cin >> s;
//length_s = s.size();
//array_Char_Chache = (char *)malloc(sizeof(char * length_s )) ;
s2 = "";
for(int i = 0 ; s[i] != '\0' ; i++ )
{
if(s[i] >= '0' && s[i] <= '9')
{
s2 += "number" ;
}
else
{
s2 += s[i] ;
}
}
//std::cout << s << std::endl;
std::cout << s2 << std::endl;
return 0 ;
}