- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Câu hỏi này đã được hỏi trong một cuộc phỏng vấn
Giả sử bạn có một từ điển gồm các từ: (sử dụng nếu bạn có /usr/share/dict/words).
Cho một từ (ví dụ: cricket), hãy cung cấp cho tôi tất cả các từ trong từ điển có thể đạt được bằng cách thực hiện n thao tác Trong đó một thao tác là một trong:
Phép cộng
Thay thế
Xóa
Ví dụ: nếu chỉ cho phép 1 thao tác, hãy tìm tất cả các từ có thể được tạo thành từ "cricket".
{'word': 'clicket', 'op': ['replace']}{'word': 'crickey', 'op': ['replace']}{'word': 'crickety', 'op' : ['bổ sung']}, v.v.
Tôi đang in ở định dạng của riêng mình, nhưng bạn hiểu ý chính.
Đây là những gì tôi đã thử
Đây là một giải pháp vũ phu. Tôi muốn biết liệu có giải pháp hiệu quả nào không. Sau đây là mã để bẻ khóa bằng lực lượng vũ phu
import java.io.BufferedReader;
nhập java.io.FileNotFoundException;
nhập java.io.FileReader;
import java.io.IOException;
nhập java.util.ArrayList;
nhập java.util.HashMap;
nhập java.util.Iterator;
nhập java.util.List;
nhập java.util.Map;
lớp công khai Tương tựWordDistance {
Từ điển Map = new HashMap();
int THÊM = -1;
int THAY THẾ = 0;
int XÓA = 1;
/**
* @param lập luận
* @throwsIOException
*/
public static void main(String[] args) ném IOException {
SameWordDistance swd = new SameWordDistance();
swd.readDictionary();
//swd.findSimilar("cricket", 1);
swd.findSimilar("hạnh phúc", 3);
}
public void findSimilar(String word,int num) {
int couldOperations = (int) Math.pow(3, num);
Các phép toán số nguyên[][] = Số nguyên mới[possibleOperations][num];
buildOperationsArray(num,ableOperations, Operations);
Danh sách l = new ArrayList();
l.add(từ);
Map sols = new HashMap();
for(int i=0;i<>
applyOperation(hoạt động[i],l,sols);
Iterator itr = sols.keySet().iterator();
while(itr.hasNext()) {
Chuỗi n = itr.next();
printSolution(sols.get(n), n);
}
}
void void applyOperation(Integer[] Operation,List word,Map sols) {
Danh sách khả năng = từ;
for(int i=0;i
if(hoạt động[i] == THÊM) {
Danh sách temp = new ArrayList();
for(int j =0;j
temp.addAll(applyAdditionOperation(possiblities.get(j)));
//System.out.println(temp.size());
}
khả năng = tạm thời;
}
if(hoạt động[i] == THAY THẾ) {
Danh sách temp = new ArrayList();
for(int j =0;j
temp.addAll(applyReplace(possiblities.get(j)));
//System.out.println(temp.size());
}
khả năng = tạm thời;
}
if(hoạt động[i] == XÓA) {
Danh sách temp = new ArrayList();
for(int j =0;j
temp.addAll(applyDeletion(possiblities.get(j)));
}
khả năng = tạm thời;
}
}
for(int i=0;i
Chuỗi w = khả năng.get(i);
if(dictionary.containsKey(w)) {
sosol.put(w, thao tác);
}
}
}
protected void printSolution(Hoạt động Integer[], Chuỗi w) {
System.out.print(w+"\t" );
for(int j=0;j
System.out.print(printOperation(Operation[j])+"\t");
}
System.out.println();
}
Chuỗi riêng tư printOperation(Số nguyên) {
if(số nguyên == THÊM) {
trả về "Bổ sung";
} if(số nguyên == THAY THẾ) {
trả về "Thay thế";
} khác {
trả về "Xóa";
}
}
Danh sách riêng tư applyAdditionOperation(String word) {
char[] khả năng = {'a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','y ','z'};
Danh sách có thểWords = new ArrayList();
for(int i=0;i
for(int j=0;j
Chuỗi temp = InsertAt(word,j,possiblities[i]);
có thểWords.add(temp);
}
}
trả lại các từ có thể;
}
Danh sách riêng tư applyDeletion(String word) {
Danh sách có thểWord = new ArrayList();
for(int i=0;i
Tiền tố chuỗi = word.substring(0,i);
Hậu tố chuỗi = word.substring(i+1,word.length());
Chuỗi tenp = tiền tố+hậu tố;
có thểWord.add(tenp);
}
trả lại từ có thể;
}
Danh sách riêng tư applyReplace(String word) {
char[] khả năng = {'a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','y ','z'};
Danh sách có thểWord = new ArrayList();
for(int i=0;i
for(int j=0;j
Chuỗi temp = word.substring(0,j)+possiblities[i]+word.substring(j+1,word.length());
if(temp.length()!=word.length())
System.out.println("######################");
có thểWord.add(temp);
}
}
trả lại từ có thể;
}
Chuỗi riêng chènAt(Chuỗi word, int j, char c) {
Tiền tố chuỗi = word.substring(0,j);
Hậu tố chuỗi = word.substring(j+1,word.length());
Chuỗi ret = tiền tố+c+hậu tố;
return ret;
}
protected void buildOperationsArray(int num, int couldOperations,
Phép toán số nguyên[][]) {
for(int i=0;i<>
for(int j=0;j
fillPossiblities(num, actions, ADDTION, i, j); // 3 hàng
if(i+3
fillPosossiblities(num, actions, REPLACE, i+3, j); // 3 hàng
if(i+6 < có thểHoạt động)
fillPosossiblities(num, actions, DELETION, i+6, j); // 3 hàng
}
}
/* System.out.println(Operations.length);
for(int i=0;i
for(int j=0;j
System.out.print(hoạt động[i][j]+"\t");
}
System.out.println();
}*/
}
/**
* Mỗi lần phương thức này được gọi nó sẽ điền vào tất cả các cột của hàng được truyền
* với 1 giá trị mặc định và điền vào 2 hàng tiếp theo với khả năng hoán vị của giá trị đó
*cột
* @param num
* Hoạt động @param
* @param chắc chắn
* @param curRow
*/
protected void fillPossiblities(int num, Integer[][] actions,int def,int curRow,int curColumn) {
for(int i=0;i
hoạt động [curRow] [i] = def;
}
for(int i=0;i
if(i!=curColumn)
hoạt động [curRow+1] [i] = def;
}
hoạt động [curRow+1] [curColumn] = getNext(def);
int def1 = getNext(def);
for(int i=0;i
if(i!=curColumn)
hoạt động [curRow+2] [i] = def;
}
hoạt động [curRow+2] [curColumn] = getNext(def1);
}
int riêng tư getNext(int def) {
nếu(def == -1) {
trả về THAY THẾ;
}
nếu(def == 0) {
trả về XÓA;
} khác {
trả lại THÊM;
}
}
public void readDictionary() ném IOException {
BufferedReader in = new BufferedReader(new FileReader("C:\\Documents\\Downloads\\words"));
trong khi (in.ready()) {
Chuỗi s = in.readLine();
từ điển.put(s, true);
}
in.close();
}
}
câu trả lời hay nhất
Đối với mỗi từ trong từ điển
d = khoảng cách chỉnh sửa tối thiểu (từ đã cho, từ)
nếu d <= n
in (chữ)
Khoảng cách chỉnh sửa tối thiểu có thể được giải quyết bằng thuật toán lập trình động nổi tiếng với độ phức tạp là O(n*m)
其中 n
Và m
là độ dài của hai từ.
Bài viết Wikipedia có cách triển khai:http://en.wikipedia.org/wiki/Levenshtein_distance
Về java - [Phỏng vấn] Tính toán khoảng cách từ tương tự, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/19904285/
Tổng quan Có hai loại lưu trữ dữ liệu trong cơ sở dữ liệu, một là cơ sở dữ liệu theo hàng và loại kia là cơ sở dữ liệu theo cột. Cơ sở dữ liệu hướng hàng (giao dịch) Loại cơ sở dữ liệu này dựa trên
bắt đầu từ một câu nói đùa Q: Để cho một con voi vào tủ lạnh, các bước thực hiện là gì? Trả lời: Ba bước. Đầu tiên, mở cửa tủ lạnh Thứ hai, đặt con voi vào. Thứ ba, đóng cửa tủ lạnh lại. Câu hỏi: Các bước thực hiện giao dịch mùa xuân là gì? Trả lời: ba
Tôi đã có câu hỏi này trong một cuộc phỏng vấn gần đây. Có chuyện gì thế này? Tôi biết đủ về c# nhưng tôi không thể thấy lỗi. Tôi có thể không? Lớp x { chuỗi bảo vệ t1; int công khai
Trong một cuộc phỏng vấn, tôi đã được yêu cầu thiết kế một hệ thống tệp cho phép người dùng thêm các thuộc tính của riêng họ vào tệp và thư mục. Tôi vừa nói thêm thuộc tính vào bộ mô tả tệp và cho phép tìm kiếm tệp dựa trên tiêu chí thuộc tính này, cũng như thêm thuộc tính này để hiển thị trong chi tiết tệp/thư mục. Có vẻ như người phỏng vấn
Tôi đang phỏng vấn, những câu hỏi nào nên được hỏi dưới đây? Tôi có thể cho rằng đây là vấn đề mà bạn không thể kiểm tra xem lớp học có trống không, phải không? !Cảm ơn bạn! Lớp công khai NiceActivity mở rộng Hoạt động { riêng tư
Cho một mảng, làm thế nào để trả về logarit có tổng là số chẵn? Ví dụ: a[] = { 2 , -6 , 1, 3, 5 } Trong mảng này, logarit của tổng các số chẵn là (2,-6), (1,3) , (1,5) , (3 ,5) Hàm sẽ trả về
Câu hỏi này đã được hỏi trong một cuộc phỏng vấn Giả sử bạn có một từ điển gồm các từ: (sử dụng nếu bạn có /usr/share/dict/words).
Tôi được yêu cầu triển khai invert(x,p,n) để trả về n bit của x bắt đầu từ vị trí p bị đảo ngược (tức là 1 trở thành 0 và ngược lại), nếu không thì không thay đổi. Giải pháp của tôi là: unsigned invert(unsigned x,
Tôi đã được hỏi câu hỏi này: Cho một mảng int và int tổng có kích thước n, tôi cần trả về tất cả các cặp phần tử mảng có tổng bằng tổng std::vector > find(int* arr,size_t n,i
Tôi gặp phải câu hỏi này trong một cuộc phỏng vấn. Có một tập hợp các đối tượng được liên kết với giá trị bắt đầu và giá trị kết thúc. Số lượng liên quan đến mỗi đối tượng là số đối tượng khác có thời gian bắt đầu dài hơn và thời gian kết thúc ngắn hơn. Vì vậy tôi phải tìm số lượng liên quan đến từng đối tượng. Tôi đã nghĩ ra giải pháp O(n^2)
Tôi đã được hỏi câu hỏi này trong một cuộc phỏng vấn ngày hôm nay. Tôi đã thử một giải pháp nhưng không biết có cách nào tốt hơn để giải quyết vấn đề này không: Vấn đề: Tôi có một danh sách mảng với 500.000 phần tử sao cho mỗi phần tử của danh sách mảng có cùng giá trị với chỉ mục. Ví dụ: tôi
Có một ma trận chứa các ô trắng, các ô đen và chỉ một ô màu xám cần đi từ (0,0) đến (N-1, N-1) nếu ràng buộc Arra[N][N]: A. Đường dẫn chỉ được bao gồm các ô màu trắng và phải đi qua các ô màu xám. b.Tham quan
Cho một mảng các số nguyên dương, hãy tìm giá trị lớn nhất có thể được hình thành bởi bất kỳ hoán vị nào của mảng đó. Tôi tự hỏi liệu có cấu trúc dữ liệu tốt hơn có thể cung cấp giải pháp tinh tế hơn cho vấn đề hay không. nhập java.util.ArrayList; nhập java.u
Tôi đã được hỏi câu hỏi sau đây trong một cuộc phỏng vấn (không may là tôi không thể tìm thấy câu trả lời nào hay hơn N^2) Đối với một mảng nhất định có int không dấu có kích thước N, đối với mỗi phần tử (trong chỉ mục i) tôi nên trả về một phần tử tại chỉ số j (j
Cực: Một phần tử trong mảng trong đó phần tử bên trái nhỏ hơn hoặc bằng nó và phần tử bên phải lớn hơn hoặc bằng nó. Ví dụ đầu vào 3,1,4,5,9,7,6,11 Đầu ra dự kiến 4,5,11 Tôi đã được hỏi câu hỏi này trong cuộc phỏng vấn. Để trả về chỉ mục của phần tử, chỉ có phần tử đầu tiên đáp ứng điều kiện là. đã quay trở lại.
Như hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
Hôm nay tôi đã được hỏi câu hỏi này và tôi biết câu trả lời rất đơn giản, nhưng anh ấy đã giữ tôi đi đến cuối cùng. Câu hỏi: Viết chương trình xóa các số chẵn được lưu trong ArrayList chứa 1 - 100. Tôi chỉ nói wow với bạn, đây là cách tôi làm điều đó. mảngLi
Tôi đã gặp câu hỏi này trong một cuộc phỏng vấn và hoàn toàn bối rối. Giải pháp duy nhất tôi có thể nghĩ đến là lưu trữ currentAngle trong NSArray để tính góc tiếp theo. Câu hỏi: Sử dụng la bàn của iPhone để di chuyển số 35 trên màn hình
Tôi phải phỏng vấn một số ứng viên C++ trong vài tuần tới, và với tư cách là lập trình viên cao cấp nhất trong công ty, tôi nên cố gắng tìm hiểu xem những người này có biết họ đang làm gì không. Vậy có ai có gợi ý gì không? Cá nhân tôi ghét bị bỏ lại trong phòng để điền một số câu hỏi về C++, vì vậy
Hàng đợi tin nhắn (MQ), một mô hình truyền thông có thể đạt được giao tiếp một chiều từ nhà sản xuất đến người tiêu dùng, cũng là một phần mềm trung gian phổ biến được sử dụng phổ biến hiện nay. Những cái phổ biến bao gồm RabbitMQ, ActiveMQ, Kafka, v.v. Chúng cũng có nhiều tính năng như tách rời, không đồng bộ và phát sóng.
Tôi là một lập trình viên xuất sắc, rất giỏi!