जब तक a
और b
रूप में एक ही लंबाई हम ऐसा कर सकते हैं:
s.a <- strsplit(a, "")[[1]]
s.b <- strsplit(b, "")[[1]]
paste(s.a[s.a != s.b], collapse = "")
देने:
[1] "Hd"
इस कोड की स्पष्टता के मामले में सीधा लगता है और के लिए बंधे लगता है यहां प्रदान किए गए समाधानों में से सबसे तेज़ हालांकि मुझे लगता है कि मैं f3
:
f1 <- function(a, b)
paste(setdiff(strsplit(a,"")[[1]],strsplit(b,"")[[1]]), collapse = "")
f2 <- function(a, b)
paste(sapply(setdiff(utf8ToInt(a), utf8ToInt(b)), intToUtf8), collapse = "")
f3 <- function(a, b)
paste(Reduce(setdiff, strsplit(c(a, b), split = "")), collapse = "")
f4 <- function(a, b) {
s.a <- strsplit(a, "")[[1]]
s.b <- strsplit(b, "")[[1]]
paste(s.a[s.a != s.b], collapse = "")
}
a <- "Happy day"
b <- "Tappy Pay"
library(rbenchmark)
benchmark(f1, f2, f3, f4, replications = 10000, order = "relative")[1:4]
अपने लैपटॉप पर एक ताजा सत्र पर निम्नलिखित दे रही है:
test replications elapsed relative
3 f3 10000 0.07 1.000
4 f4 10000 0.07 1.000
1 f1 10000 0.09 1.286
2 f2 10000 0.10 1.429
मैं मान लिया है कि मतभेदों को इसी चरित्र की स्थिति में होना चाहिए। आप स्पष्ट करना चाहते हैं कि क्या यह इरादा है या नहीं।
स्रोत
2015-03-03 14:43:03
मेरा सुझाव है कि आप संपादन को पूर्ववत करें और एक नई ques पूछें tion। इस नए प्रश्न में आपको अपने वास्तविक डेटा के बारे में अधिक जानकारी देना होगा। उदाहरण के लिए, यह बहुत मायने रखता है कि क्या आप जानते हैं कि स्ट्रिंग के अंत में विभिन्न स्ट्रिंग प्रारंभ बनाम है। आपको यह भी बताना होगा कि आपकी समस्या [सबसे आम सामान्य सबस्ट्रिंग समस्या] (http://en.wikipedia.org/wiki/Longest_common_substring_problem) से संबंधित है या नहीं। – Andrie
सहमत, संपादन पूर्ववत करें, सर्वोत्तम उत्तर स्वीकार करें, और एक नया प्रश्न पूछें।सवाल काफी अलग है, और बहुत से लोगों ने पहले से ही बहुत सारे काम किए हैं। – BrodieG