Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Hỏi về bài tập string

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    0

    Mặc định Hỏi về bài tập string

    Mình mới làm một số ví dụ về string , hôm nay có bài yêu cầu tìm ra substring lớn nhất trong 2 string nhập vào :
    ví dụ : s1="String Java" , s2="Learning Java" thì substring lớn nhất cần tìm là "ing Java" có cả khoảng trống .
    ví dụ 2 : s1"Hello World", s2="Microsoft Word" thì substring lớn nhất cần tìm là " Wor" có cả khoảng trống.
    Vì mới học nên chưa có hướng giải quyết cho bài tập này , các bạn nào giỏi giúp đỡ hướng dẫn mình với

  2. #2
    Ngày gia nhập
    11 2012
    Bài viết
    29

    Trích dẫn Nguyên bản được gửi bởi spookh2 Xem bài viết
    Mình mới làm một số ví dụ về string , hôm nay có bài yêu cầu tìm ra substring lớn nhất trong 2 string nhập vào :
    ví dụ : s1="String Java" , s2="Learning Java" thì substring lớn nhất cần tìm là "ing Java" có cả khoảng trống .
    ví dụ 2 : s1"Hello World", s2="Microsoft Word" thì substring lớn nhất cần tìm là " Wor" có cả khoảng trống.
    Vì mới học nên chưa có hướng giải quyết cho bài tập này , các bạn nào giỏi giúp đỡ hướng dẫn mình với
    Bạn này quen quen. ) Bạn tham khảo lại xem. )
    Code:
    import java.util.Scanner;
    
    class FindMaxSub
    {
    	public static void toFind_MaxSub(String str1, String str2)
    	{
    		String maxSub = "";
    		int i1, j1, i2, j2;
    
    		for(i1 = 0; i1 < str1.length(); i1 ++)
    			for(j1 = i1 + 1; j1 <= str1.length(); j1 ++)
    				for(i2 = 0; i2 < str2.length(); i2 ++)
    					for(j2 = i2 + 1; j2 <= str2.length(); j2 ++)
    						if(str1.substring(i1, j1).equals(str2.substring(i2, j2)))
    							if(str1.substring(i1, j1).length() > maxSub.length())
    								maxSub = str1.substring(i1, j1);
    
    		System.out.print("Max substring : " + maxSub);
    	}
    		
    	public static void main(String args[])
    	{	
    		String str1, str2;
    
    		Scanner in = new Scanner(System.in);
    
    		System.out.print("Put str1 in : ");
    		str1 = in.nextLine();
    		System.out.print("Put str2 in : ");
    		str2 = in.nextLine();
    
    		toFind_MaxSub(str1, str2);
    	}
    }

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    0

    cám ơn pato nhé , cậu lại giúp tớ rồi . tớ sẽ nghiên cứu code của cậu . Cám ơn nhiều lắm, tại mới học nên không biết đành phải lên đây hỏi thui

  4. #4
    Ngày gia nhập
    07 2011
    Bài viết
    0

    cậu giải thích giúp mình chỗ 4 vòng lặp for với lệnh if được ko :(
    Đã được chỉnh sửa lần cuối bởi spookh2 : 31-01-2013 lúc 12:48 PM.

  5. #5
    Ngày gia nhập
    05 2007
    Nơi ở
    ha noi
    Bài viết
    15

    Bài này cần viết lại yêu cầu là: tìm chuỗi giống nhau lớn nhất giữa hai chuỗi cho trước.

    Kết quả có thể là chuỗi rỗng hoặc nhiều chuỗi khác nhau vì tiêu chí lớn nhất ở đây chỉ có thể dựa vào chiều dài của chuỗi.

    Cách dùng 4 vòng lặp là cách không hay trong bài toán này.

    Đơn giản hơn bạn có thể duyệt qua chuỗi đầu tiên để tìm tất cả các chuỗi con có thể của nó và dùng hàm String.containts(String regex); để kiểm tra xem chuỗi đó có phải chuỗi con của thằng thứ 2 không. Duyệt qua hết chuỗi và lưu lại những chuỗi có độ dài lớn nhất.
    Nghề chính IT
    Lắm khi thảm hại
    Luyện nghề tay trái
    Tán gái làm thơ

  6. #6
    Ngày gia nhập
    11 2012
    Bài viết
    29

    Mặc định Hỏi về bài tập string

    Trích dẫn Nguyên bản được gửi bởi spookh2 Xem bài viết
    cậu giải thích giúp mình chỗ 4 vòng lặp for với lệnh if được ko :(
    Cách mình làm vẫn còn chưa hay lắm đâu (sử dụng nhiều vòng for). Mình chỉ nghĩ ra được vậy thôi.
    Chỗ vòng for bạn chạy thử là biết, mình lấy ví dụ đơn giản:
    Giả sử bạn có :
    - str1 là "abc".
    - str2 là "ab".
    Bạn chạy lần lượt từng vòng for. i1 = 0, j1 = 1, i2 = 0, j2 = 1.
    Tiếp tuc là câu lệnh if : str1.subtring(i1, j1) = "a", str2.substring(i2, j2) = "a", thỏa dk if đầu tiên, tiếp theo là if thứ 2, tất nhiên là thỏa(str1.substring, str2.substring bằng nhau rồi, nên mình xét 1 cái thôi, length của nó lúc này = 1, maxSub ban đầu mình tạo rỗng nên length maxSub = 0)
    => maxSub = str1.substring(i1, j1) = "a".
    Tiếp tục vòng for 4 chạy tiếp j2 = 2, str2.substring(i2, j2) = "ab". Dĩ nhiên if sẽ không thỏa(str2.substring khác str1.substring (str1.substring = "a")).
    Tiếp tục vòng for 3 chạy tiếp i2 = 1 => j2 = 2, str2.substring(i2, j2) = "b". str2.sub vẫn khác str1.sub, không thỏa if.
    Kêt thúc vòng 3, i2 < str2.length() rồi.
    Cứ thế, vòng for 2 chạy...
    ....
    ....
    maxSub = "ab".
    Bạn đọc từ từ sẽ hiểu, mình có giải thích cũng ko hết được. Cách này hơi chán, bạn tham khảo thêm bạn bè xem. À, mà mấy bài tập bạn post cũng hay đấy, có dk bạn cứ post lên cho mọi người tham khảo. Tự suy nghĩ vẫn tốt hơn.

  7. #7
    Ngày gia nhập
    07 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi pato24193 Xem bài viết
    Cách mình làm vẫn còn chưa hay lắm đâu (sử dụng nhiều vòng for). Mình chỉ nghĩ ra được vậy thôi.
    Chỗ vòng for bạn chạy thử là biết, mình lấy ví dụ đơn giản:
    Giả sử bạn có :
    - str1 là "abc".
    - str2 là "ab".
    Bạn chạy lần lượt từng vòng for. i1 = 0, j1 = 1, i2 = 0, j2 = 1.
    Tiếp tuc là câu lệnh if : str1.subtring(i1, j1) = "a", str2.substring(i2, j2) = "a", thỏa dk if đầu tiên, tiếp theo là if thứ 2, tất nhiên là thỏa(str1.substring, str2.substring bằng nhau rồi, nên mình xét 1 cái thôi, length của nó lúc này = 1, maxSub ban đầu mình tạo rỗng nên length maxSub = 0)
    => maxSub = str1.substring(i1, j1) = "a".
    Tiếp tục vòng for 4 chạy tiếp j2 = 2, str2.substring(i2, j2) = "ab". Dĩ nhiên if sẽ không thỏa(str2.substring khác str1.substring (str1.substring = "a")).
    Tiếp tục vòng for 3 chạy tiếp i2 = 1 => j2 = 2, str2.substring(i2, j2) = "b". str2.sub vẫn khác str1.sub, không thỏa if.
    Kêt thúc vòng 3, i2 < str2.length() rồi.
    Cứ thế, vòng for 2 chạy...
    ....
    ....
    maxSub = "ab".
    Bạn đọc từ từ sẽ hiểu, mình có giải thích cũng ko hết được. Cách này hơi chán, bạn tham khảo thêm bạn bè xem. À, mà mấy bài tập bạn post cũng hay đấy, có dk bạn cứ post lên cho mọi người tham khảo. Tự suy nghĩ vẫn tốt hơn.
    mình cũng có tự code nhưng không nghĩ ra được thuật toán để giải nên mới nhờ mọi người :( cám ơn cậu nhé

  8. #8
    Ngày gia nhập
    07 2011
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi thonv Xem bài viết
    Bài này cần viết lại yêu cầu là: tìm chuỗi giống nhau lớn nhất giữa hai chuỗi cho trước.

    Kết quả có thể là chuỗi rỗng hoặc nhiều chuỗi khác nhau vì tiêu chí lớn nhất ở đây chỉ có thể dựa vào chiều dài của chuỗi.

    Cách dùng 4 vòng lặp là cách không hay trong bài toán này.

    Đơn giản hơn bạn có thể duyệt qua chuỗi đầu tiên để tìm tất cả các chuỗi con có thể của nó và dùng hàm String.containts(String regex); để kiểm tra xem chuỗi đó có phải chuỗi con của thằng thứ 2 không. Duyệt qua hết chuỗi và lưu lại những chuỗi có độ dài lớn nhất.
    mình chưa học đến regex nên không biết cách này , chỉ mới học những cái căn bản nhất thôi. xD

Các đề tài tương tự

  1. C++ Tutorial hướng dẫn thao tác string variable.. kiểu dữ liệu string
    Gửi bởi beautifulsoul84hung trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 05-12-2016, 03:20 AM
  2. làm thế nào chuyển String o[] sang String hoặc byte[].
    Gửi bởi zzvanquyenzz trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 17-06-2013, 09:24 AM
  3. Method String.CompareTo(string strB) trong C# thực hiện so sánh 2 chuỗi như thế nào?
    Gửi bởi tpqnnd trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 27-05-2012, 10:52 AM
  4. Bài tập C++ tạo toán tử ==trong lớp string với tham số là string, char
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-10-2011, 08:56 AM
  5. Lập trình C++ sử dụng string trong C++. Lỗi C2146: syntax error : missing ';' before identifier tại string string_rep()const;?
    Gửi bởi levanvuonglvv trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 15-09-2011, 10:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn