我从字符串中提取小写和大写字符。然后按排序顺序打印那些大写和小写字符串。对我使用std :: sort函数的字符串进行排序。但它不起作用。
这是我的代码
Ag <- lapply(files,
function(f) aggregate(HS ~ Year, read.table(f, header = TRUE, sep = ";"), max))
测试用例:
#include <bits/stdc++.h>
using namespace std;
int main() {
//std::ios::sync_with_stdio(false);
char str[1005];
char low[1005];
char upr[1005];
int n;
int t;
cin>>t;
while(t--)
{
cin>>n;
cin>>str;
low[0]='\0';
upr[0]='\0';
int i=0,j=0,k=0;
while(i<n)
{
(str[i]>='A' && str[i]<='Z') ? (upr[j]=str[i],++j) : (low[k]=str[i],++k) ;
++i;
}
low[j]='\0';
upr[k]='\0';
cout<<"lowercase="<<low<<'\n';
cout<<"uppercase="<<upr<<'\n';
sort(low,low+j);
sort(upr,upr+k);
cout<<"lowercase="<<low<<'\n';
cout<<"uppercase="<<upr<<'\n';
}
return 0;
}
输出:
1 // number of test cases
15 // length of string
abHJUdjKIpwlaKm
排序大写字符串后甚至不打印。
答案 0 :(得分:4)
您有索引错误,修复:
low[k] = '\0';
upr[j] = '\0';
cout << "lowercase=" << low << '\n';
cout << "uppercase=" << upr << '\n';
sort(low, low + k);
sort(upr, upr + j);
cout << "lowercase=" << low << '\n';
cout << "uppercase=" << upr << '\n';
在此代码段中交换了k
和j
。
答案 1 :(得分:4)
更好的变量名称会有所帮助。尝试使用j
和k
等更具描述性的内容替换lowIndex
和uprIndex
。然后你应该看到问题。
答案 2 :(得分:2)
我注意到你在while循环中使用j变量为大写,k为小写,然后继续执行相反的操作。这是故意的吗?想知道这是否会导致错误。