给定一个非空字符串 ,其被 个-
分隔成 的子串,给定正整数 ,要求除第一个子串外,其余的串每 个用-
分隔,并将小写字母转换为大写。
正整数 和-
分割的字符串,如:
2
25G3C-abc-d
转换后的字符串
4
5F3Z-2e-9-w
5F3Z-2E9W
字符串 被分成了两个部分,每部分 4 个字符;
注意,两个额外的破折号需要删掉。
2
2-5g-3-J
2-5G-3J
字符串 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void formatString(int K, char* S) {
int len = strlen(S);
char newS[len*2];
int j = 0;
int count = 0;
for (int i = len - 1; i >= 0; i--) {
if (S[i] != '-') {
newS[j++] = toupper(S[i]);
if (++count % K == 0 && i != 0) {
newS[j++] = '-';
}
}
}
newS[j] = '\0';
for (int i = 0; i < j / 2; i++) {
char temp = newS[i];
newS[i] = newS[j - i - 1];
newS[j - i - 1] = temp;
}
printf("%s\n", newS);
}
int main() {
int K;
char S[100];
scanf("%d", &K);
scanf("%s", S);
formatString(K, S);
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
void formatString(int K, string S) {
S.erase(remove(S.begin(), S.end(), '-'), S.end());
transform(S.begin(), S.end(), S.begin(), ::toupper);
for (int i = S.size() - K; i > 0; i -= K) {
S.insert(i, "-");
}
cout << S << endl;
}
int main() {
int K;
string S;
cin >> K;
cin >> S;
formatString(K, S);
return 0;
}
package com.amoscloud.nowcoder.refactor.t0251_0260;
import java.util.*;
/**
* Created with IntelliJ IDEA.
*
* @Author: Amos
* @E-mail: amos@amoscloud.com
* @Date: 2023/7/22
* @Time: 23:13
* @Description:
*/
public class Main0252 {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int K = scanner.nextInt();
String S = scanner.next();
String res = solution(K, S);
System.out.println(res);
}
}
private static String solution(int K, String S) {
S = S.replace("-", "").toUpperCase();
StringBuilder sb = new StringBuilder(S);
// Insert "-" from end to start
for (int i = S.length() - K; i > 0; i -= K) {
sb.insert(i, "-");
}
return sb.toString();
}
}
def format_string(K, S):
S = S.replace('-', '').upper()
for i in range(len(S) - K, 0, -K):
S = S[:i] + '-' + S[i:]
return S
K = int(input())
S = input()
print(format_string(K, S))
const formatString = (K, S) => {
S = S.replace(/-/g, '').toUpperCase();
let arr = S.split('');
for (let i = S.length - K; i > 0; i -= K) {
arr.splice(i, 0, '-');
}
return arr.join('');
};
const K = parseInt(readline());
const S = readline();
console.log(formatString(K, S));
package main
import (
"fmt"
"strings"
"unicode"
)
func formatString(K int, S string) string {
S = strings.ReplaceAll(S, "-", "")
S = strings.ToUpper(S)
sb := []rune(S)
for i := len(sb) - K; i > 0; i -= K {
sb = append(sb[:i], append([]rune("-"), sb[i:]...)...)
}
return string(sb)
}
func main() {
var K int
var S string
fmt.Scan(&K, &S)
fmt.Println(formatString(K, S))
}