500. Keyboard Row

题目

Given a List of words, return the words that can be typed using letters of alphabet on only one row’s of American keyboard like the image below.

American keyboard

Example 1:
Input: [“Hello”, “Alaska”, “Dad”, “Peace”]
Output: [“Alaska”, “Dad”]

Note:

You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.
Subscribe to see which companies asked this question.

class Solution {
public:
    vector<string> findWords(vector<string>& words) {

    }
};

就不翻译了

http://blog.chinaunix.net/uid-26000296-id-3785610.html
http://blog.chinaunix.net/uid-26000296-id-3785623.html
先看看这个做题会有很大帮助

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
         vector<string> result;
        vector<set<char>> v(3);
        string s1 = "QWERTYUIOPqwertyuiop", s2 = "ASDFGHJKLasdfghjkl", s3 = "ZXCVBNMzxcvbnm";
        for (int i = 0; i < s1.length(); i++) v[0].insert(s1[i]);
        for (int i = 0; i < s2.length(); i++) v[1].insert(s2[i]);
        for (int i = 0; i < s3.length(); i++) v[2].insert(s3[i]);
        for (int i = 0; i < words.size(); i++) {
            int tag = -1;
            bool flag = true;
            if (words[i].length() == 0) continue; 
            if (v[0].find(words[i][0]) != v[0].end()) tag = 0;
            if (v[1].find(words[i][0]) != v[1].end()) tag = 1;
            if (v[2].find(words[i][0]) != v[2].end()) tag = 2;
            for (int j = 1; j < words[i].length(); j++) {
                if (v[tag].find(words[i][j]) == v[tag].end()) {
                    flag = false;
                    break;
                }
            }
            if (flag == true)
                result.push_back(words[i]);
        }
        return result;
    }
};

代码转载自:http://www.liuchuo.net/archives/3202

检测鼠标事件 def mouse_event(self, event, x, y, flags, param): if event == cv2.EVENT_LBUTTONUP and x > 550 and y < 50: def open_login_window(my_window, on_entry_click): loginwindow = LoginWindow(on_entry_click) loginwindow.transient(my_window) loginwindow.wait_visibility() loginwindow.grab_set() def quit_window(my_window): # self.camera_process.terminate() my_window.destroy() # 虚拟键盘 def on_entry_click(self, event, entry): if self.keyboard_window: self.keyboard_window.destroy() keyboard_window = tk.Toplevel(self) keyboard_window.title("虚拟键盘") keyboard_window.geometry("610x140") keyboard_window.resizable(False, False) button_list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '<-', 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm'] row = 0 col = 0 for button_text in button_list: button = tk.Button(keyboard_window, text=button_text, width=3) if button_text != '<-': button.config(command=lambda char=button_text: entry.insert(tk.END, char)) else: button.config( command=lambda char=button_text: entry.delete(len(entry.get()) - 1, tk.END)) button.grid(row=row, column=col) col += 1 if col > 10: row += 1 col = 0 keyboard_window.deiconify() self.keyboard_window = keyboard_window # 登录界面 my_window = tk.Tk() my_window.title("登录") my_window.geometry("300x200") # 计算窗口位置,让其出现在屏幕中间 screen_width = my_window.winfo_screenwidth() screen_height = my_window.winfo_screenheight() x = (screen_width - 300) // 2 y = (screen_height - 200) // 2 my_window.geometry("+{}+{}".format(x, y)) my_window.wm_attributes("-topmost", True) login_button = tk.Button(my_window, text="登录", font=('Arial', 12), width=10, height=1, command=lambda: open_login_window(my_window, on_entry_click)) login_button.pack(side='left', expand=True) exitbutton = tk.Button(my_window, text="退出", font=('Arial', 12), width=10, height=1, command=lambda: [quit_window(my_window)]) exitbutton.pack(side='left', expand=True) my_window.mainloop() if event == cv2.EVENT_LBUTTONUP and x < 50 and y > 1000: cv2.destroyAllWindows() 在此基础上请实现让tk界面不会出现重影 用中文回答
最新发布
06-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值