Dalam PHP strrev()
, dalam Rails .reverse
, tetapi sebagian besar bahasa tidak memiliki fungsi string terbalik. Beberapa memiliki fungsi array terbalik yang dapat digunakan pada karakter. Saya berpikir ini harus menjadi pengawasan besar tetapi kemudian terpikir oleh saya, apa yang akan Anda gunakan untuk membalikkan string ???
Satu-satunya waktu saya dapat berpikir saya telah melihatnya dalam demo dan pelajaran untuk mengubah "Hello World!" menjadi "! dlroW olleH".
Pertanyaanku adalah; Apakah ada gunanya membalikkan sebuah string atau itu sama sekali tidak ada gunanya?
.
Tambahan
Ada jauh lebih banyak jawaban yang telah saya antisipasi dan tidak semuanya sepenuhnya bersifat akademis. Saya akan menaruh uang sehingga tidak ada yang bisa memberikan contoh yang sah. Saya juga tidak berpikir saya akan belajar sesuatu yang baru tetapi saran regex Mark Canlas hanya brilian dan saya menantikan kesempatan untuk membuktikannya sendiri. Terimakasih untuk semua.
sumber
a ^= b; b ^= a; a ^= b;
Jawaban:
Sexegers
Terkadang, masalah yang melibatkan ekspresi reguler dapat lebih mudah ditulis dengan meminta string input dibalik dan menangani masalah dengan cara yang berbeda.
Teknik kesopanan dari pria yang mengajari saya Perl.
Sexeger di PerlMonks
sumber
Nah, ini adalah jawaban yang tidak jelas.
"Kembali pada hari" Aku memiliki kotak Unix, dan memiliki file kamus kata-kata bahasa Inggris, yang digunakan untuk memeriksa ejaan.
Saya membuat file baru dengan membalikkan semua kata dalam kamus, mengurutkannya, dan kemudian membalikkannya lagi. Hasilnya adalah daftar kata yang diurutkan dari kanan ke kiri.
Jadi jika Anda mencari sebuah kata, di sebelah kata itu akan ada kata-kata dengan akhiran yang sama. Jadi mudah untuk membuat puisi kecil!
Anda benar-benar dapat menghibur diri sendiri ketika Anda melihat apa yang berirama dengan apa.
sumber
Saya telah menjadi coder / developer / sysadmin selama ~ 10 tahun dan saya tidak ingat pernah membutuhkan pembalikan string dalam situasi kehidupan nyata.
Satu-satunya kasus penggunaan langsung yang dapat saya pikirkan adalah konversi basis angka: dilakukan secara naif, prosedur mengembalikan string yang terbalik. Namun, dengan sedikit matematika, Anda dapat menghitung di muka jumlah ruang yang dibutuhkan, sehingga Anda dapat mulai mengisi buffer dari akhir.
sumber
memmove
untuk memulai ketika selesai. Mungkin lebih murah daripada menghitung log (n) / log (basis) untuk menghitung jumlah digit yang diperlukan.sumber
0
ken/2
dan membandingkan karakter di ujung.while ( (*p == *q) && (p <= q) {p++; q--} return p > q;
dalam bahasa C dan pointer lainnya.Wawancara!
Membalik string (di tempat atau tidak) adalah pertanyaan wawancara yang sangat umum untuk pengetahuan pemrograman dasar. Bahasa yang tidak memiliki fungsi bawaan ini akan sulit untuk diwawancarai. Calon sebenarnya harus tahu sesuatu. 1
1: Ini adalah jawaban yang tidak jelas.
sumber
Saya telah melihat situasi di mana aplikasi desktop berbicara dengan perangkat yang disematkan dan secara terus-menerus mengganti byte-order endianness, dan data dipindahkan sebagai string. Itu saja untuk saya.
Saya tidak akan menggunakan string untuk aplikasi itu tetapi hanya seperti itu .....
sumber
Bukan solusi terbaik untuk mengaburkan alamat email, karena ketika Anda menambahkannya ke clipboard, itu masih terbalik. Dan, jika menjadi populer, itu akan segera terdeteksi oleh bot pengeruk email.
Tetap saja, sudah disarankan .
sumber
ASCII bukan pengkodean terbaik untuk informasi genetik (Anda dapat mengemas tipe dasar ACGT sebagai 2bits). Kemas dalam array yang panjang dan Anda akan mendapatkan 32 "huruf" genetik per kata. DNA dapat diputar balik, jadi Anda harus memeriksa sepotong DNA terhadap kedua maju adalah salinan terbalik dari urutan tes. Jadi bisa membalikkan string 2bit dalam jumlah banyak bisa sangat berguna untuk berbagai macam analisis genetik.
Saya memiliki sebagai item pada patokan untuk agen mata-mata, seberapa cepat Anda bisa membalikkan bit itu lama-lama (sebenarnya array yang sangat panjang sangat lama). Metode pertukaran 2bit yang jelas pada suatu waktu jauh lebih lambat daripada metode yang kurang jelas. Ini terkait dengan beberapa algoritma rapi untuk transposisi array in place.
Tangurena: Operasi yang Anda rujuk disebut penghitungan populasi. Keinginan serupa untuk data yang dikemas sedikit mengarah dan tertinggal nol hitungan. Ada banyak hal yang benar-benar rapi yang dapat dilakukan seseorang dengan data yang dikemas sedikit. Satu operasi pada longlong adalah data paralel 64way, jadi jika Anda tahu apa yang Anda lakukan, Anda bisa mendapatkan kinerja luar biasa untuk jenis komputasi tertentu.
sumber
Di mana pun bekerja dengan string terbalik lebih mudah.
Bekerja dengan bilangan bulat sebagai string jauh lebih mudah jika string dibalik. Saya membangun beberapa fungsi perpustakaan untuk melakukan matematika dengan bilangan bulat besar dan menggunakan pembalikan string untuk membuat fungsi aritmatika lebih sederhana.
Memang, saya hanya menggunakannya untuk mendapatkan jawaban di Project Euler, tapi tetap saja, premis aslinya masih berlaku.
sumber
Mungkin dukungan multi-bahasa berbiaya rendah, untuk bahasa yang menggunakan huruf kanan-ke-kiri (seperti bahasa Arab), alih-alih dari kiri ke kanan. Tentu saja Anda harus berhati-hati terhadap aksen karakter yang memodifikasi karakter yang tepat ...
sumber
Saya tidak tahu, mungkin seseorang memiliki kebutuhan yang membara untuk memeriksa palindrome ....
Saya tidak berpikir itu sama sekali tidak berguna, karena mungkin ada situasi di mana seseorang perlu dapat membalikkan string.
sumber
Dalam pemrosesan & parsing bahasa alami, terkadang lebih mudah untuk mencari string dari akhir hingga awal. String terbalik akan berguna untuk debugging, atau sebagai cara alternatif untuk menulis loop (membalikkan string dan kemudian loop dari indeks 0 ke n-1).
Juga beberapa bahasa dituliskan dari kanan ke kiri, sehingga pembalikan string dapat digunakan untuk itu jika Anda berada di lingkungan yang tidak mengenali bahasa LTR / RTL.
String (dalam beberapa bahasa) adalah larik karakter, tetapi bisa juga berupa gaji atau modifikasi inventaris. Dalam satu lingkaran bergerak melintasi ini, Anda mungkin melakukan beberapa perhitungan yang harus sama terlepas dari apa urutan Anda memprosesnya. Tes unit kromulen sempurna akan memeriksa untuk melihat apakah mereka perhitungan berlaku sama maju atau mundur. Ini mungkin jelas sepele untuk ditambahkan, mungkin tidak untuk operasi yang lebih buram lainnya.
sumber
Untuk penyusun?
Ini lucu, tetapi sebagian besar simbol dalam bahasa akan dimulai dengan pola umum. Saya tidak berbicara tentang Notasi Hongaria di sini, tetapi jika Anda berpikir tentang namespace / kelas, maka banyak simbol akan berbagi awalan yang sama .
Masalahnya adalah, ketika melakukan pencarian biner, awalan umum adalah hal terburuk yang bisa Anda dapatkan, karena Anda akhirnya akan membandingkan awalan tersebut berulang kali.
Di sisi lain, jika Anda melihat string ke belakang, Anda akan melihat lebih banyak entropi! Dan tiba-tiba pencarian biner (lebih dari Trie) menjadi jauh lebih kuat!
Itu selalu menyadap saya bahwa nama C ++ hancur (oleh gcc) tidak terbalik untuk menempatkan namespace TERAKHIR :)
sumber
Saya membalik nomor telepon dan string tertentu untuk pencarian dari waktu ke waktu
sumber
Satu-satunya waktu saya dapat mengingat melihat pembalikan string yang digunakan adalah fungsi yang saya lihat sebelumnya yang menggunakannya saat mem-parsing nama file, untuk memastikan bahwa '.' itu ditemukan dalam nama file sebenarnya adalah titik terakhir yang memisahkan nama file dari ekstensi. yaitu, parsing nama file seperti
data.2010.12.08.dat
, Anda akan membalikkan string, menemukan titik pertama, kurangi posisi itu dari akhir string asli, dan ambil substring tersebut. Saya tidak mengatakan itu cara optimal untuk melakukannya, tetapi itulah yang dilakukannya. Mungkin di powerbuilder, di mana penggunaan fungsi aneh seperti itu biasa untuk mengatasi berbagai masalah yang tidak jelas.sumber
Satu-satunya aplikasi worl nyata yang saya lihat menggunakan strrev adalah untuk menyimpan kata sandi pengguna 'tidak dapat dibaca' dalam basis data ...
Tapi saya bisa ingat ada pola di C untuk menggunakan strrev, mungkin saya akan membuatnya nanti.
sumber