Tôi đã dành nửa ngày cố gắng tìm ra điều này và cuối cùng tôi đã nhận được giải pháp làm việc. Tuy nhiên, tôi cảm thấy như thế này có thể được thực hiện theo cách đơn giản hơn. Tôi nghĩ rằng mã này không thực sự dễ đọc.Làm cách nào để tìm ký tự không lặp lại đầu tiên từ một chuỗi?
Sự cố: Tìm ký tự không lặp lại đầu tiên từ chuỗi.
$ string = "abbcabz"
Trong trường hợp này, hàm sẽ xuất "c".
Lý do tôi sử dụng nối thay vì $input[index_to_remove] = ''
để loại bỏ ký tự từ một chuỗi cho trước là bởi vì nếu tôi làm điều đó, nó thực sự chỉ để lại ô trống để trở lại giá trị $ đầu vào của tôi [0] không không trả lại ký tự tôi muốn trả lại.
Ví dụ,
$str = "abc";
$str[0] = '';
echo $str;
chí đầu ra này "bc"
Nhưng trên thực tế nếu tôi thử nghiệm,
var_dump($str);
nó sẽ cho tôi:
string(3) "bc"
đây là ý định của tôi:
Given: input
while first char exists in substring of input {
get index_to_remove
input = chars left of index_to_remove . chars right of index_to_remove
if dupe of first char is not found from substring
remove first char from input
}
return first char of input
Code:
function find_first_non_repetitive2($input) {
while(strpos(substr($input, 1), $input[0]) !== false) {
$index_to_remove = strpos(substr($input,1), $input[0]) + 1;
$input = substr($input, 0, $index_to_remove) . substr($input, $index_to_remove + 1);
if(strpos(substr($input, 1), $input[0]) == false) {
$input = substr($input, 1);
}
}
return $input[0];
}
+1 cho độ ngắn – whiskeysierra
+2 cho ngắn gọn, cảm ơn! –