tôi cần phải mã hóa một phương pháp mà tăng một giá trị chuỗi từ AAA đến zzz với xoay vòng (giá trị tiếp theo sau khi ZZZ là AAA)Tăng một giá trị từ AAA đến zzz với xoay vòng
Đây là mã của tôi:
public static string IncrementValue(string value) {
if (string.IsNullOrEmpty(value) || value.Length != 3) {
string msg = string.Format("Incorrect value ('{0}' is not between AAA and ZZZ)", value);
throw new ApplicationException(msg);
}
if (value == "ZZZ") {
return "AAA";
}
char pos1 = value[0];
char pos2 = value[1];
char pos3 = value[2];
bool incrementPos2 = false;
bool incrementPos1 = false;
if (pos3 == 'Z') {
pos3 = 'A';
incrementPos2 = true;
} else {
pos3++;
}
if (incrementPos2 && pos2 == 'Z') {
pos2 = 'A';
incrementPos1 = true;
} else {
if (incrementPos2) {
if (pos2 == 'Z') {
pos2 = 'A';
incrementPos1 = true;
}
pos2++;
}
}
if (incrementPos1) {
pos1++;
}
return pos1.ToString() + pos2.ToString() + pos3.ToString();
}
tôi biết đoạn mã này là khá bẩn và không phải là rất hiệu quả nhưng tôi không biết làm thế nào để làm điều đó đúng.
Làm thế nào được đảm bảo đoạn này? (điều này sẽ chỉ chạy trên cửa sổ plaform)
Làm cách nào để tối ưu hóa và làm cho nó dễ đọc hơn?
Cảm ơn ý kiến của bạn
Tại sao không sử dụng số cơ sở 26? – kennytm
Bạn có thực sự cần phương pháp tăng hay không, ví dụ: một iterator lặp đi lặp lại vô hạn làm việc? –
@Matthew Bạn có gợi ý anh ta tạo một danh sách vòng tròn chứa các giá trị AAA..ZZZ không? Đó sẽ là một danh sách khá lớn. – meagar